Presentation is loading. Please wait.

Presentation is loading. Please wait.

Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. L03-1 September 14, 2006http://www.csg.csail.mit.edu/6.827 -calculus: A Basis for.

Similar presentations


Presentation on theme: "Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. L03-1 September 14, 2006http://www.csg.csail.mit.edu/6.827 -calculus: A Basis for."— Presentation transcript:

1 Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. L03-1 September 14, 2006http://www.csg.csail.mit.edu/6.827 -calculus: A Basis for Functional Languages September 14, 2006

2 L03-2 September 14, 2006http://www.csg.csail.mit.edu/6.827 Functions f may be viewed as a set of ordered pairs where d  D and r  R a method of computing value r corresponding to argument d some important notations – -calculus (Church) – Turing machines (Turing) – Partial recursive functions...... Domain Range f : D   R

3 L03-3 September 14, 2006http://www.csg.csail.mit.edu/6.827 The -calculus: a simple type-free language to express all computable functions to directly express higher-order functions to study evaluation orders, termination, uniqueness of answers... to study various typing systems to serve as a kernel language for functional languages –However, -calculus extended with constants and let- blocks is more suitable

4 L03-4 September 14, 2006http://www.csg.csail.mit.edu/6.827 -notation a way of writing and applying functions without having to give them names a syntax for making a function expression from any other expression the syntax distinguishes between the integer "2” and the function "always_two" which when applied to any integer returns 2 always_two x = 2;

5 L03-5 September 14, 2006http://www.csg.csail.mit.edu/6.827 Pure-calculus: Syntax variable abstraction application E = x | x.E | E E 1. application E 1 E 2 function argument - application is left associative E 1 E 2 E 3 E 4  ((( E 1 E 2 ) E 3 ) E 4 ) 2. abstraction x.E bound variable body or formal parameter - the scope of the dot in an abstraction extends as far to the right as possible x.x y x.(x y) (x.(x y))  (x.x y)  (x.x) y

6 L03-6 September 14, 2006http://www.csg.csail.mit.edu/6.827 Free and Bound Variables -calculus follows lexical scoping rules Free variables of an expression FV(x) = {x} FV(E 1 E 2 )= ? FV(x.E)= ? FV(E 1 ) U FV(E 2 ) FV(E) – {x} A variable occurrence which is not free in an expression is said to be a bound variable of the expression combinator: a -expression without free variables, aka closed -expression

7 L03-7 September 14, 2006http://www.csg.csail.mit.edu/6.827 ß-substitution (x.E) E a  E[E a /x] replace all free occurrences of x in E with E a E[A/x] is defined as follows by case on E: variable y[E a /x]= E a if x y y[E a /x]= otherwise ? application (E 1 E 2 )[E a /x] = ? abstraction (y.E 1 )[E a /x] = y.E 1 if x  y (y.E 1 )[E a /x] = y (E 1 [E a /x] E 2 [E a /x]) (y.E 1 [E a /x]) otherwise What if E a contains y ? ? z.((E 1 [z/y])[E a /x]) otherwise where z   FV(E 1 ) U FV(E a ) U FV(x)

8 L03-8 September 14, 2006http://www.csg.csail.mit.edu/6.827 ß-substitution: an example (p.p (p q)) [(a p b) / q]  (z.z (z q)) [(a p b) / q]  (z.z (z (a p b)))

9 L03-9 September 14, 2006http://www.csg.csail.mit.edu/6.827 -Calculus as a Reduction System Syntax E = x | x.E | E E Reduction Rule   -rule:x.E y.E [y/x] if y  FV(E)   -rule:(x.E) E a  E [E a /x] -rule:(x.E x)  E if x  FV(E) Redex (x.E) E a Normal Form An expression without redexes

10 L03-10 September 14, 2006http://www.csg.csail.mit.edu/6.827  and  Rules -rule says that the bound variables can be renamed systematically: (x.x (x.a x)) b  (y.y (x.a x)) b -rule can turn any expression, including a constant, into a function: x.a x  a -rule does not work in the presence of types

11 L03-11 September 14, 2006http://www.csg.csail.mit.edu/6.827 A Sample Reduction  f.f ( x. y.x)) (C a b) (( C a b) ( x. y.x) (( x. y.x) a b  ( y.a) b  a   H (C a b)a T (C a b)b C x.y.f.f x y Hf.f (x.y. x) Tf.f (x.y. y) What is H (C a b) ?

12 L03-12 September 14, 2006http://www.csg.csail.mit.edu/6.827 Integers: Church's Representation 0 x.y. y 1 x.y. x y 2 x.y. x (x y)... n x.y. x (x...(x y)...) succ ? If n is an integer, then (n a b) gives n nested a’s followed by b the successor of n should be a (n a b) succn.a.b.a (n a b) plus? mul ? m.n.m succ n m. n.m (plus n) 0

13 L03-13 September 14, 2006http://www.csg.csail.mit.edu/6.827 Booleans and Conditionals Truex.y.x Falsex.y.y zero?n. n (y.False) True zero? 0 ? zero? 1 ?    x. y.y) ( y.False) True  y. y) True TT rue  x. y.x y) ( y.False) True  ( y.False) True FF alse   condb.x.y. b x y cond True E 1 E 2  ? cond False E 1 E 2  ? E1E2E1E2

14 L03-14 September 14, 2006http://www.csg.csail.mit.edu/6.827 Recursion ? Assuming suitable combinators, fact can be rewritten as: fact = n. cond (zero? n) 1 (mul n (fact (sub n 1))) How do we get rid of the fact on the RHS? fact n = if (n == 0) then 1 else n * fact (n-1) Suppose H = f.n.cond (zero? n) 1 (mul n (f (sub n 1))) then fact = H fact --- fact is a solution of this equation??? more on recursion in the next lecture

15 L03-15 September 14, 2006http://www.csg.csail.mit.edu/6.827 Choosing Redexes 1. ((x.M) A) ((x.N) B) ------  ------ ------  ------ 2. ((x.M) ((y.N)B)) ------   ------ -------------   ----------- Does   followed by    produce the same expression as   followed by   ? Notice in the second example   can destroy or duplicate   

16 L03-16 September 14, 2006http://www.csg.csail.mit.edu/6.827 Church-Rosser Property A reduction system is said to have the Church-Rosser property, if E E 1 and E E 2 then there exits a E 3 such that E 1 E 3 and E 2 E 3. E E 1 E 2 E 3 also known as CR or Confluence Theorem: The -calculus is CR. (Martin-Lof & Tate)    

17 L03-17 September 14, 2006http://www.csg.csail.mit.edu/6.827 Interpreters An interpreter for the -calculus is a program to reduce -expressions to “answers”. It requires: the definition of an answer a reduction strategy - a method to choose redexes in an expression a criterion for terminating the reduction process

18 L03-18 September 14, 2006http://www.csg.csail.mit.edu/6.827 Definitions of “Answers” Normal form (NF): an expression without redexes Head normal form (HNF): x is HNF (x.E) is in HNF if E is in HNF (x E 1... E n ) is in HNF Semantically most interesting- represents the information content of an expression Weak head normal form (WHNF): An expression in which the left most application is not a redex. x is in WHNF (x.E) is in WHNF (x E 1... E n ) is in WHNF Practically most interesting   “Printable Answers”

19 L03-19 September 14, 2006http://www.csg.csail.mit.edu/6.827 Reduction Strategies Two common strategies applicative order: left-most innermost redex aka call by value evaluation normal order: left-most (outermost) redex aka call by name evaluation ( x.y) (( x.x x) ( x.x x)) 11 22 applicative order normal order

20 L03-20 September 14, 2006http://www.csg.csail.mit.edu/6.827 Facts 1.Every -expression does not have an answer i.e., a NF or HNF or WHNF (x.x x) (x.x x) =   2. CR implies that if NF exists it is unique 3. Even if an expression has an answer, not all reduction strategies may produce it (x.y.y)  leftmost redex:(x.y.y) y.y innermost redex:(x.y.y)   ( x. y. y) ...

21 L03-21 September 14, 2006http://www.csg.csail.mit.edu/6.827 Normalizing Strategy A reduction strategy is said to be normalizing if it terminates and produces an answer of an expression whenever the expression has an answer. aka the standard reduction Theorem: Normal order (left-most) reduction strategy is normalizing for the  -calculus.

22 L03-22 September 14, 2006http://www.csg.csail.mit.edu/6.827 A Call-by-name Interpreter Answers: WHNF Strategy: leftmost redex cn(E): Definition by cases on E E = x | x.E | E E cn(x)= x cn(x.E)= x.E cn(E 1 E 2 )= let f = cn(E 1 ) in case f of x.E 3 = cn(E 3 [E 2 /x]) _ = (f E 2 ) Apply the function before evaluating the arguments

23 L03-23 September 14, 2006http://www.csg.csail.mit.edu/6.827 Better syntax... [[....]] represents syntax E = x | x.E | E E cn([[x]])= x cn([[x.E]])= x.E cn([[E 1 E 2 ]])= let f = cn([[E 1 ]]) in case f of [[x.E 3 ]] = cn(E3[E2/x]) _ = (f E 2 ) still messy Meta syntax

24 L03-24 September 14, 2006http://www.csg.csail.mit.edu/6.827 A Call-by-value Interpreter Answers: WHNF Strategy: leftmost-innermost redex but not inside a -abstraction cv(E): Definition by cases on E E = x | x.E | E E cv(x)= x cv(x.E)= x.E cv( E 1 E 2 )= let f = cv(E 1 ) a = cv(E 2 ) in case f of x.E 3 = cv(E 3 [a/x]) _ = (f a) Evaluate the argument before applying the function

25 L03-25 September 14, 2006http://www.csg.csail.mit.edu/6.827 Normalizing? ( x.y) (( x.x x) ( x.x x)) call by value reduction call by name reduction ( x.y) (( x.x x) ( x.x x)) y Which interpreters (if any) are normalizing for computing WHNF ? call-by-value call-by-name Clearly not May be The proof to show that the call-by-name interpreter is normalizing is non-trivial

26 L03-26 September 14, 2006http://www.csg.csail.mit.edu/6.827 Big Step Semantics Consider the following rule E 1 E 2  E 1  x.E b E b [E 2 / x] Can we compute using this rule? What does it compute? Will it compute every thing that the –calculus can?


Download ppt "Arvind Computer Science and Artificial Intelligence Laboratory M.I.T. L03-1 September 14, 2006http://www.csg.csail.mit.edu/6.827 -calculus: A Basis for."

Similar presentations


Ads by Google