;; ------------------------------------------------------------------------ ;; | FILE : let-to-app01-racket.rkt | ;; | AUTHOR : Eugene Wallingford | ;; | CREATION DATE : 2024/03/19 | ;; | DESCRIPTION : demonstrates let as a syntaction abstraction | ;; ------------------------------------------------------------------------ #lang racket (require rackunit) (define let->app ; for simple Racket let expression (lambda (let-exp) (let ((bindings (second let-exp)) ; Wouldn't (body (third let-exp))) ; syntax procedures (let ((vars (map first bindings)) ; be a nice addition (vals (map second bindings))) ; to this code? (cons (list 'lambda vars body) vals))))) (check-equal? (let->app '(let ((a 1) (b 2)) (+ (* a a) (* b b)))) '((lambda (a b) (+ (* a a) (* b b))) 1 2)) ;; --------------------------------------------------------------------------