Typically contrasted with imperative languages, for ten points, identify this type of programming language, most famously exemplified by Scheme and LISP, and which models itself on the evaluation of certain mathematical relations.
They typically lack memory allocation and explicit variable assignments, and the absence in them of side effects ensures referential transparency. Pure ones have no variables at all and are therefore thread-safe, and the first one was known as IPL and was developed for the JOHNNIAC at the RAND Corporation. They possess two different types of evaluation, a strict way which evaluates all arguments first, and a lazy way, which evaluates arguments as they are needed and is exemplified by the Haskell language. Typically making heavy use of recursion, they had their foundation in the development by Alonzo Church of the lambda calculus. Typically contrasted with imperative languages, for ten points, identify this type of programming language, most famously exemplified by Scheme and LISP, and which models itself on the evaluation of certain mathematical relations.
They typically lack memory allocation and explicit variable assignments, and the absence in them of side effects ensures referential transparency.
functional languages