相关疑难解决方法(0)

构建LISP机器需要多少原语?十,七,五?

在这个网站上,他们说有10个LISP原语.原语是:atom, quote, eq, car, cdr, cons, cond, lambda, label, apply.

http://hyperpolyglot.wikidot.com/lisp#ten-primitives

Stevey估计有七个(或五个):

它是LISP概念纯度的一部分:你只需要七个(或五个?)原语来构建整个机器. http://steve-yegge.blogspot.com/2006/04/lisp-is-not-acceptable-lisp.html

构建LISP机器的最小基元数是多少(即可以在LISP代码上运行eval/value函数的东西)?(他们是哪一个?)

(我明白你可以没有生活atom, label and apply)

lisp primitive scheme clojure common-lisp

76
推荐指数
6
解决办法
1万
查看次数

如何实现Lisp宏系统?

我在node.js上实现了自己的Lisp,我可以像这样运行s表达式:

(assert (= 3 (+ 1 2)))

(def even? (fn [n] (= 0 (bit-and n 1))))

(assert (even? 4))
(assert (= false (even? 5)))

现在我想添加宏 - defmacro功能 - 但这是我被卡住的地方.我想知道的宏系统是如何在其他的Lisp实现,但我无法找到许多指针(除了这个这个).

我看过Clojure宏系统 - 我最熟悉的Lisp - 但这看起来太复杂了,我找不到我可以轻易应用的其他线索(Clojure宏最终编译成不适用的字节码对于javascript,我也无法理解这个macroexpand1功能.)

所以我的问题是:给定一个没有宏但带有AST的Lisp实现,如何添加像Clojure宏系统这样的宏系统?这个宏系统可以在Lisp中实现,还是在宿主语言的实现中需要额外的功能?

还有一句话:我还没有实现quote(')因为我无法弄清楚返回列表中应该包含哪种值.如果它包含AST的元件或类似的对象SymbolKeyword(后者是用于Clojure的情况下)?

lisp macros clojure

17
推荐指数
2
解决办法
3833
查看次数

仅使用LISP原语定义defmacro函数?

麦卡锡的基本S函数和谓语atom,eq,car,cdr,cons

接着,他添加到他的基本符号,以便能够写他所谓的S-功能:quote,cond,lambda,label

在此基础上,我们将这些称为"LISP原语"(尽管我对类型谓词的论证持开放态度numberp)

如何defmacro在您选择的LISP中仅使用这些原语来定义函数?(包括计划和Clojure)

lisp macros primitive scheme clojure

11
推荐指数
1
解决办法
1355
查看次数

添加f-exprs是否简化了LISP中基本表达式的宏的实现?

这家伙认为,向LISP添加fexprs可以大大简化计划中语言的实现.

在这里,我们看到如何使用MacCarthy的LISP实现宏.

我的问题是 - 添加f-exprs是否简化了LISP中宏的实现?

lisp macros scheme clojure

7
推荐指数
1
解决办法
744
查看次数

标签 统计

clojure ×4

lisp ×4

macros ×3

scheme ×3

primitive ×2

common-lisp ×1