Guest User

Untitled

a guest
Dec 17th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. (setq lexical-binding t)
  2.  
  3. (defun rev (l)
  4. (if (null (cdr l))
  5. (lambda (f) (cons (car l) (funcall f)))
  6. (lambda (x) (funcall (rev (cdr l)) x))))
  7.  
  8. (funcall (rev '(1 2 3)))
  9.  
  10. (defun re0 (l)
  11. (cond ((null l) (error "wat"))
  12. ((null (cdr l)) (lambda (x) (cons (car l) (funcall x))))
  13. (t (lambda (x) (funcall (re0 (cdr l)) (lambda () (car l)))))))
  14.  
  15. (re0 '())
  16. (re0 '(1))
  17. (re0 '(1 2))
  18.  
  19. (defun re1 (l)
  20. (cond ((null l) (error "wat"))
  21. ((null (cdr l)) (lambda (x) (cons (car l) (funcall x))))
  22. (t (lambda (x) (funcall (rev (cdr l)) (lambda () (cons (car l) (funcall x))))))))
  23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ^--- TYPO !
  24.  
  25. (funcall (re1 '(1)) (lambda () nil)) ;; => (1)
  26. (funcall (re1 '(1 2)) (lambda () nil)) ;; => (2 1)
  27. (funcall (re1 '(1 2 3)) (lambda () nil)) ;; => (3 1)
  28. (funcall (re1 '(1 2 3 4)) (lambda () nil)) ;; => (4 1)
  29.  
  30. (defun re2 (l)
  31. (cond ((null l) (error "wat"))
  32. ((null (cdr l)) (lambda (x) (cons (car l) (funcall x))))
  33. (t (lambda (x) (funcall (re2 (cdr l)) (lambda () (cons (car l) (funcall x))))))))
  34.  
  35. (funcall (re2 '(1)) (lambda () nil)) ;; => (1)
  36. (funcall (re2 '(1 2)) (lambda () nil)) ;; => (2 1)
  37. (funcall (re2 '(1 2 3)) (lambda () nil)) ;; => (3 2 1)
  38. (funcall (re2 '(1 2 3 4)) (lambda () nil)) ;; => (4 3 2 1)
  39.  
  40. ;;; WIN
Add Comment
Please, Sign In to add comment