algebraic data type autolisp bisimulation calculus of constructions category theory combinatory logic common lisp currying declarative programming denotational semantics domain theory eager evaluation emacs lisp exception handling extensionality fixed point combinator function-level programming functional programming game semantics glasgow haskell compiler graph reduction graph reduction machine higher-order function hugs iswim intuitionistic logic intuitionistic type theory kent recursive calculator lambda calculus lazy evaluation linear logic natural deduction objective caml operational semantics programming paradigm purely functional secd machine sisal ski combinator calculus sequent sequent calculus simulation preorder standard ml state transition system template haskell type inference type signature type theory typed lambda calculus yoneda lemma