Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;; lambda expression do not have any assignments
- ;; so we will use the form where there is not lambda expressions
- ((lambda ()
- (define (adder n) (+ n 1))
- (define (mult3 n) (* n 3))
- (mult3 (adder 10))
- ))
- ;; create make-adder and compose using higher-order functions
- ((lambda ()
- (define (make-adder a) (lambda (n) (+ n 1)))
- (define (mult3 n) (* n 3))
- (define (compose f g) (lambda (x) (f (g x))))
- ((compose mult3 (make-adder 1)) 10)))
- ;; tenants correspondence principle
- ;; introduce binding
- ;; wrapping a function
- ;; inlining
- ;; tenants correspondence principle
- ((lambda ()
- (define (make-adder a) (lambda (n) (+ n 1)))
- (define (mult3 n) ((lambda () (* n 3)))) ;; update due to Tenants corresponse principle
- (define (compose f g) ((lambda () (lambda (x) (f (g x)))))) ;;update with Tenants correpondence principle
- ((compose mult3 (make-adder 1)) 10)))
- ;; introduce a binding
- ;; wrapping a function
- ((lambda (x) (+ x 1)) 10)
- ((lambda ()
- (define (make-adder a) (lambda (n1) ((lambda (n) (+ n a)) n1))) ;; wrapping a function
- (define (mult3 n) ((lambda (n) (* n 3)) n))
- (define (compose f g) (
- (lambda (v)
- ((lambda () (lambda (x) (f (g x)))))) 1234)) ;; introduce binding
- ((compose mult3 (make-adder 1)) 10)))
- ;; inlining
- ((lambda ()
- ;;(define (make-adder) (lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1)))) ;; wrapping a function
- ;;(define (mult3 n) ((lambda (n) (* n 3)) n))
- (define (compose f g) (
- (lambda (v)
- ((lambda () (lambda (x) (f (g x)))))) 1234)) ;; introduce binding
- ((compose
- (lambda (n) (* n 3) n)
- ((lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1))) 1))
- 10)))
- ;; inlinit compose
- ((lambda ()
- ;;(define (make-adder) (lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1)))) ;; wrapping a function
- ;;(define (mult3 n) ((lambda (n) (* n 3)) n))
- ;;(define (compose) (lambda (f g)
- ;; (lambda (v)
- ;; ((lambda () (lambda (x) (f (g x)))))) 1234)) ;; introduce binding
- (((lambda (f g)
- ((lambda (v)
- ((lambda () (lambda (x) (f (g x)))))) 1234))
- (lambda (n) (* n 10))
- ((lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1))) 20)) 40)))
- ((lambda ()
- (((lambda (f g)
- ((lambda (v)
- ((lambda () (lambda (x) (f (g x)))))) 1234))
- (lambda (x) (* x 10))
- (lambda (x) (+ x 20))) 40)))
- ((lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1))) 10)
Add Comment
Please, Sign In to add comment