在这个网站上,他们说有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)
注意:我不是在问哪个学习,哪个更好,或者类似的东西.
我拿起SICP的免费版本,因为我觉得阅读会很好(我听说过很好的东西,而且我对这种编程方面很感兴趣).
我知道Scheme是Lisp的一种方言,我想知道:Scheme和Common Lisp之间的实际区别是什么?
似乎有很多关于'CL有一个更大的stdlib ...方案对现实世界的编程不好......'但实际上并没有说'这是因为CL就是这个/有这个'.
什么之间的区别eq,eql,equal和equalp,在Common Lisp的?我知道其中一些检查类型,其中一些检查所有类型,但哪个是哪个?什么时候比其他人更好用?
首先,不仅有两种主要的语言方言(Common Lisp和Scheme),而且每种方言都有许多单独的实现.例如,Chicken Scheme,Bigloo等......每个都有细微差别.
从现代的角度来看,这很奇怪,因为现在的语言往往具有明确的实现/规范.想想Java,C#,Python,Ruby等,每个网站都有一个单一的权威网站,您可以访问API文档,下载等.当然,Lisp早于所有这些语言.但话说回来,甚至C/C++都是标准化的(或多或少).
由于Lisp的年龄,这个社区的碎片化是什么?或者也许不同的实现/方言旨在解决不同的问题?我理解为什么Lisp永远不会像在一个明确的实现中成长的语言那样团结一致,这是有充分理由的,但是在这一点上,Lisp社区不应该向这个方向发展吗?
我已经学到了足够的Common Lisp,能够通过编写应用程序来混淆我的方式.我读过Seibel的Practical Common Lisp
我应该阅读哪些图书馆或程序来理解Common Lisp的成语,道?
有关用于不同类型注释的分号数量(以及不同数量的分号的缩进程度应该是多少)的Lisp约定是什么?
另外,是否有关于何时使用分号注释以及何时使用的约定#|multiline comments|#(假设它们存在且存在于多个实现中)?
我刚刚开始学习Lisp,我无法弄清楚如何编译和链接lisp代码到可执行文件.
我正在使用clisp并clisp -c生成两个文件:
接下来我要做什么来获取可执行文件?
在Common Lisp中你可以这样做:
(defun foo (bar &key baz quux)
(list bar baz quux))
(foo 1 :quux 3 :baz 2) ; => (1 2 3)
Run Code Online (Sandbox Code Playgroud)
Clojure没有关键字参数.一种选择是:
(defn foo [bar {:keys [baz quux]}]
(list bar baz quux))
(foo 1 {:quux 3 :baz 2}) ; => (1 2 3)
Run Code Online (Sandbox Code Playgroud)
这是太多的嵌套括号,必须一直打字和阅读.它还需要将显式散列映射作为参数而不是平面列表传递.
什么是最惯用的Clojure相当于关键字参数,看起来没有人引发标点炸弹?
我看到实用的Common Lisp使用(defvar *db* nil)设立一个全局变量.是否可以setq用于同一目的?
使用defvarvs. 的优点/缺点是setq什么?