Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 
 

30 wiersze
677 B

  1. (defun make-vector (x y z)
  2. (let ((local-x x)
  3. (local-y y)
  4. (local-z z)
  5. (defun (macro (@name @params :rest @body)
  6. (eval (pair 'define-upwards (pair @name (pair (pair 'lambda (pair @params @body)) nil)))))))
  7. (defun set-x (new-x) (mutate local-x new-x))
  8. (defun set-y (new-y) (mutate local-y new-y))
  9. (defun set-z (new-z) (mutate local-z new-z))
  10. (defun dispatch (message)
  11. (if (= message ::get-x)
  12. local-x
  13. (if (= message ::set-x)
  14. set-x
  15. nil)))
  16. (break)
  17. dispatch))
  18. (define v (make-vector 1 2 3))
  19. (print (v ::get-x))
  20. ((v ::set-x) 19)
  21. (print (v ::get-x))
  22. (read " ")