Guest User

Untitled

a guest
Feb 20th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.48 KB | None | 0 0
  1. ;; lambda expression do not have any assignments
  2. ;; so we will use the form where there is not lambda expressions
  3.  
  4. ((lambda ()
  5. (define (adder n) (+ n 1))
  6. (define (mult3 n) (* n 3))
  7. (mult3 (adder 10))
  8. ))
  9.  
  10. ;; create make-adder and compose using higher-order functions
  11.  
  12. ((lambda ()
  13. (define (make-adder a) (lambda (n) (+ n 1)))
  14. (define (mult3 n) (* n 3))
  15. (define (compose f g) (lambda (x) (f (g x))))
  16. ((compose mult3 (make-adder 1)) 10)))
  17.  
  18.  
  19. ;; tenants correspondence principle
  20. ;; introduce binding
  21. ;; wrapping a function
  22. ;; inlining
  23.  
  24. ;; tenants correspondence principle
  25. ((lambda ()
  26. (define (make-adder a) (lambda (n) (+ n 1)))
  27. (define (mult3 n) ((lambda () (* n 3)))) ;; update due to Tenants corresponse principle
  28. (define (compose f g) ((lambda () (lambda (x) (f (g x)))))) ;;update with Tenants correpondence principle
  29. ((compose mult3 (make-adder 1)) 10)))
  30.  
  31.  
  32. ;; introduce a binding
  33. ;; wrapping a function
  34. ((lambda (x) (+ x 1)) 10)
  35.  
  36. ((lambda ()
  37. (define (make-adder a) (lambda (n1) ((lambda (n) (+ n a)) n1))) ;; wrapping a function
  38. (define (mult3 n) ((lambda (n) (* n 3)) n))
  39. (define (compose f g) (
  40. (lambda (v)
  41. ((lambda () (lambda (x) (f (g x)))))) 1234)) ;; introduce binding
  42. ((compose mult3 (make-adder 1)) 10)))
  43.  
  44. ;; inlining
  45. ((lambda ()
  46. ;;(define (make-adder) (lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1)))) ;; wrapping a function
  47. ;;(define (mult3 n) ((lambda (n) (* n 3)) n))
  48. (define (compose f g) (
  49. (lambda (v)
  50. ((lambda () (lambda (x) (f (g x)))))) 1234)) ;; introduce binding
  51. ((compose
  52. (lambda (n) (* n 3) n)
  53. ((lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1))) 1))
  54. 10)))
  55.  
  56. ;; inlinit compose
  57. ((lambda ()
  58. ;;(define (make-adder) (lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1)))) ;; wrapping a function
  59. ;;(define (mult3 n) ((lambda (n) (* n 3)) n))
  60. ;;(define (compose) (lambda (f g)
  61. ;; (lambda (v)
  62. ;; ((lambda () (lambda (x) (f (g x)))))) 1234)) ;; introduce binding
  63. (((lambda (f g)
  64. ((lambda (v)
  65. ((lambda () (lambda (x) (f (g x)))))) 1234))
  66. (lambda (n) (* n 10))
  67. ((lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1))) 20)) 40)))
  68.  
  69.  
  70. ((lambda ()
  71. (((lambda (f g)
  72. ((lambda (v)
  73. ((lambda () (lambda (x) (f (g x)))))) 1234))
  74. (lambda (x) (* x 10))
  75. (lambda (x) (+ x 20))) 40)))
  76.  
  77. ((lambda (a) (lambda (n1) ((lambda (n) (+ n a)) n1))) 10)
Add Comment
Please, Sign In to add comment