For 10 points, identify this programming paradigm exemplified by Haskell and Lisp, which is often contrasted with imperative programming.
These frameworks commonly use a form of lazy evaluation known as graph reduction, and deforestation is commonly applied to programs written in them. Intuitionist type theory is useful in understanding these languages, which are corresponded to proofs via the Curry-Howard isomorphism. Side effects are completely avoided in the pure form of these languages, which are based heavily in extensions of lambda calculus. Monads are used to store states in this programming paradigm, which replaces iterative structures with forward recursion. For 10 points, identify this programming paradigm exemplified by Haskell and Lisp, which is often contrasted with imperative programming.
These frameworks commonly use a form of lazy evaluation known as graph reduction, and deforestation is commonly applied to programs written in them.
functional programming languages