


* [To Dissect a Mockingbird]( * [Combinator Birds]( * [Les deux combinateurs et la totalite]( by Paul Braffort. ## Evaluation Order ## * [[!wikipedia Evaluation strategy]] * [[!wikipedia Eager evaluation]] * [[!wikipedia Lazy evaluation]] * [[!wikipedia Strict programming language]] ## Confluence, Normalization, Undecidability ## * [[!wikipedia Church-Rosser theorem]] * [[!wikipedia Normalization property]] * [[!wikipedia Turing completeness]]

* [Scooping the Loop Snooper](, a proof of the undecidability of the halting problem in the style of Dr Seuss by Geoffrey K. Pullum ## Recursion and the Y Combinator ## * [[!wikipedia Recursion (computer science) desc="Recursion"]] * [[!wikipedia Y combinator]] * [Chapter 9 from The Little Schemer]( on the Y Combinator "...and Again, and Again, and Again..." * [The Y combinator]( * [The Why of Y]( * [The Y Combinator (Slight Return), or: How to Succeed at Recursion Without Really Recursing]( * [Y Combinator for Dysfunctional Non-Schemers]( * [The Y Combinator]( * [The Y Combinator]( derives the applicative-order Y-combinator from scratch, in Scheme. This derivation is similar in flavor to the derivation found in The Little Schemer, but uses a slightly different starting approach... * [The church of the least fixed point, by Sans Pareil]( ## Folds ## * [[!wikipedia Fold (higher-order function)]] ## Types ## * [[!wikipedia Typed lambda calculus]] * [[!wikipedia Simply typed lambda calculus]] * [Type Theory]( at the Stanford Encyclopedia of Philosophy * [Church's Type Theory]( at the Stanford Encyclopedia of Philosophy * [[!wikipedia Type polymorphism]] * [[!wikipedia System F]]

* [[!wikipedia Tagged union]] * [[!wikipedia Algebraic data type]] * [[!wikipedia Recursive data type]] * [[!wikipedia Pattern matching]] * [[!wikipedia Unit type]] * [[!wikipedia Bottom type]] ##[[Learning OCaml]]## ## Monads ## * [[!wikipedia Monad (functional programming) desc="Monads in Functional Programming"]] * [Daniel Friedman. A Schemer's View of Monads](/ from but the link above is to a local copy. * [A Gentle Intro to Haskell: About Monads]( (link currently broken, check ) * [All About Monads]( * From HaskwellWiki: [Monad tutorials timeline]( | [Monad laws]( | [Monads as computation]( | [Monads as containers]( | [What a monad is not]( * [Haskell wikibook: Understanding monads]( * [You Could Have Invented Monads! (And Maybe You Already Have.)]( * Yet Another Monad Tutorial: [part 1]( [part 2]( * [Monads for the Working Haskell Programmer -- a short tutorial]( * [Introduction to Haskell: Monads]( * [SPb Haskell User Group: Monad tutorial]( * [Understanding Haskell Monads]( * [A Monad Tutorial for OCaml]( * [Beyond Monads]( * [Simple Explanation of a Monad]( * [What is a Monad?]( * [Can Anyone Explain Monads?]( * [Monad in Plain English...]( * [Monad in non-programming terms]( * [Real World Haskell: chapter on Monads]( * [Learn You a Haskell for Great Good: chapter on Functors, Applicative Functors and Monoids]( * Monads are Elephants: [Part 1]( [Part 2]( [Part 3]( [Part 4]( * [Brian Beckman: Don't fear the Monad (67 minute video)]( * [A monad non-tutorial...or why you shouldn't ask what a monad is]( * [Abstraction, intuition, and the "monad tutorial fallacy"]( * [How you should(n't) use Monad]( * [The Mother of all Monads]( * [Monads! (and Why Monad Tutorials Are All Awful)]( * [Of monads and spacesuits (archived)]( * [How not to explain Haskell monads]( * [The State Monad: a tutorial for the confused?]( * Haskell state monads: [part 1]( [part 2]( [part 3]( [part 4](

* [Research Papers/Monads and Arrows]( * [Eugenio Moggi, Notions of Computation and Monads]( Information and Computation 93 (1) 1991. * [Philip Wadler. The essence of functional programming]( invited talk, *19'th Symposium on Principles of Programming Languages*, ACM Press, Albuquerque, January 1992. * [Philip Wadler. Monads for Functional Programming]( in M. Broy, editor, *Marktoberdorf Summer School on Program Design Calculi*, Springer Verlag, NATO ASI Series F: Computer and systems sciences, Volume 118, August 1992. Also in J. Jeuring and E. Meijer, editors, *Advanced Functional Programming*, Springer Verlag, LNCS 925, 1995. Some errata fixed August 2001. * Ken Shan [Monads for natural language semantics]( (2001) uses reader monad to implement intensionality. * Ben-Avi and Winter [A modular approach to intensionality]( (2007) reinvents the technique. * Monsters and context-shifting, e.g. Gillies/von Fintel on "ifs" [not sure which paper] ## Monads in Category Theory ## * [Category Theory at SEP]( * [[!wikipedia Category theory]] * [[!wikipedia Category (mathematics) desc="Category"]] * [[!wikipedia Morphism]] * [[!wikipedia Functor]] * [[!wikipedia Natural transformation]] * [[!wikipedia Monad (category theory) desc="Monads in category theory"]] * [Haskell/Category Theory]( * [Category Theory & Functional Programming]( * [Learning Haskell through Category Theory, and Adventuring in Category Land]( * [Resources for learning practical category theory]( * [A Partial Ordering of some Category Theory applied to Haskell]( ## Side-effects / mutation ## * [[!wikipedia Referential transparency (computer science)]] * [[!wikipedia Side effect (computer science) desc="Side effects"]] * [[!wikipedia Imperative programming]] * [[!wikipedia Reference (computer science) desc="References"]] * [[!wikipedia Pointer (computing) desc="Pointers"]] * [Pointers in OCaml]( ## The Curry-Howard Correspondence ## * The [[!wikipedia Curry-Howard isomorphism]] * [The Curry-Howard correspondence in Haskell]( * [The Curry-Howard Isomorphism]( at Haskell wiki


