20CS4003001  Organization of Programming Languages  Fall 2017 

Lambda 
Lambda  Y Combinator
(define Y (lambda (X) ((lambda (procedure) (X (lambda (arg) ((procedure procedure) arg)))) (lambda (procedure) (X (lambda (arg) ((procedure procedure) arg))))))) 
 
Step 5. Jackpot! Now we write the applicativeorder
Ycombinator as shown on the left. Notice that the procedure which
does our computation is X (we stopped using F*
to emphasize this code can be applied to any procedure) and that is
passed in as an argument.

