Skip to content

Instantly share code, notes, and snippets.

@rgm
Created January 26, 2014 03:12
Show Gist options
  • Select an option

  • Save rgm/8627828 to your computer and use it in GitHub Desktop.

Select an option

Save rgm/8627828 to your computer and use it in GitHub Desktop.
SICP lecture 5B 55m00s -> end
;; pure smoke immutable cons
(define cons
(lambda (x y)
(lambda (m) (m x y))))
(define car
(lambda (x)
(x (lambda (a d) a))))
(define cdr
(lambda (x)
(x (lambda (a d) d))))
;; pure smoke mutable cons
(define cons
(lambda (x y)
(lambda (m)
(m x
y
(lambda (n) (set! x n))
(lambda (n) (set! y n))))))
(define car
(lambda (x)
(x (lambda (a d sa sd) a))))
(define cdr
(lambda (x)
(x (lambda (a d sa sd) d))))
(define set-car!
(lambda (x y)
(x (lambda (a d sa sd) (sa y)))))
(define set-cdr!
(lambda (x y)
(x (lambda (a d sa sd) (sd y)))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment