anamorphism antiderivative array programming arthur whitney assembly language association for computing machinery calculus cambridge university press catamorphism category theory central processing unit combinatory logic common subexpression elimination compiled language computation computer programming computer science concurrent computing curly bracket programming language currying data-structured language database dataflow programming david mertz declarative programming language derivative digital object identifier eager evaluation effect system esoteric programming language first-class function function-level programming gnu compiler collection haskell curry higher-order perl hoare logic immutable object imperative programming information processing language interpreted language iteration john backus lambda calculus lazy evaluation lex programming tool list of functional programming topics logic programming loop machine code massachusetts institute of technology mathematica memory management metaprogramming multi-paradigm programming language nested function non-english-based programming languages object-oriented programming language objective caml off-side rule perl pipeline programming prentice hall principle of compositionality procedural programming program state programming language programming paradigm prototype-based programming purely functional raphael finkel recursion referential transparency robin milner roger hui sasl sql scripting language simon peyton jones standard ml structure and interpretation of computer programs synchronous programming language tail recursion turing award uniqueness type university of edinburgh university of kent visual programming language xml yacc