【发布时间】:2014-01-10 02:34:14
【问题描述】:
Lisp 是谐音的,意味着代码可以被视为数据。哪些实现允许我在运行时这样做?以下是我的意思的示例,用伪代码表示:
(defun (my-func)
(display "foo ")
(display "bar ")
(display "baz "))
(defun (main-loop)
(my-func)
(swap (first my-func) (second my-func))
(main-loop))
那应该重复输出“foo bar baz bar foo baz”。
【问题讨论】:
-
我不知道具体的实现 - 但寻找那些在评估时不编译的实现。所以这将排除 SBCL 例如(可能还有很多现代的 Common Lisp 实现)。
-
@verdammelt:见sbcl.org/manual/#Interpreter
-
这不是一个完整的副本,因为我特别要求实现。现在我知道在 CLisp 和 SBCL 中是可能的。
-
@RainerJoswig 我已更正 - 谢谢!
标签: scheme lisp common-lisp self-modifying