Why learn n-calculus Foundations of functional programming Lisp, ML, Haskell often used as a core language to study language theories ype system intx=0: Scope and binding for(inti=0;i<10;i++){x++;} Higher-order functions x="abcd"; // bug(mistype) Denotational semantics i+;∥bug( out of scope) Program equivalence How to formally define and rule out these bugs?Why learn -calculus • Foundations of functional programming • Lisp, ML, Haskell, … • Often used as a core language to study language theories • Type system • Scope and binding • Higher-order functions • Denotational semantics • Program equivalence • … int x = 0; for (int i = 0; i < 10; i++) { x++; } x = “abcd”; // bug (mistype) i++; // bug (out of scope) How to formally define and rule out these bugs?