我想知道为什么我看到的大多数Common Lisp代码都有类似的东西
(mapcar #'(lambda (x) (* x x)) '(1 2 3))
而不仅仅是
(mapcar (lambda (x) (* x x)) '(1 2 3)),
这似乎也有效.我开始学习Common Lisp,并且在Scheme中有一些背景,这引起了我的兴趣.
编辑:我知道您需要带有函数名称的#',因为它们与变量位于不同的命名空间中.我的问题只是在lambda之前的#',因为lambda已经返回一个函数对象(我认为).#' - 由于宏扩展而减少lambdas的工作只会让它变得更有趣......
将Common Lisp应用程序移植到Clojure有多实用?更具体地说,Common Lisp中存在哪些功能在Clojure中不存在,并且必须重新编写?
在这段视频中,Rich Hickey为Lisp程序员介绍了Clojure.
在时间01:10:42,他在Clojure/Common Lisp/Scheme/Java中讨论了nil/false/end-of-sequence /'().他说:"计划是真实的,但它们是破碎的."

我不明白他为什么这么说,为什么他认为它"破碎"了?
".el"是以Emacs Lisp程序结尾的文件名的约定.编写Common Lisp程序时的惯例是什么?
我从来没有真正想过一个符号是否可以成为Lisp中的数字,所以我今天玩弄了它:
> '1
1
> (+ '1 '1)
2
> (+ '1 1)
2
> (define a '1)
> (+ a 1)
2
Run Code Online (Sandbox Code Playgroud)
上面的代码是scheme,但它在Common Lisp和Clojure中看起来大致相同. 是否有1,并引述1之间有什么区别?
它是否setq和setf?相似?flet和之间没有什么大的区别labels?
祝商祺!
检查项目是否在列表中的简单方法是什么?
就像是
(in item list)
Run Code Online (Sandbox Code Playgroud)
可能返回true如果item=1和list=(5 9 1 2)和false,如果item=7
我正在研究编程语言设计,我感兴趣的是如何用多方法泛型函数范例替换流行的单调度消息传递OO范例.在大多数情况下,它似乎非常简单,但我最近陷入困境,并希望得到一些帮助.
在我看来,消息传递OO是一种解决两个不同问题的解决方案.我在下面的伪代码中详细解释了我的意思.
===在文件animal.code ===
- Animals can "bark"
- Dogs "bark" by printing "woof" to the screen.
- Cats "bark" by printing "meow" to the screen.
Run Code Online (Sandbox Code Playgroud)
===在文件myprogram.code ===
import animal.code
for each animal a in list-of-animals :
a.bark()
Run Code Online (Sandbox Code Playgroud)
在这个问题中,"树皮"是一种具有多个"分支"的方法,它们根据参数类型的不同而不同.我们对我们感兴趣的每种参数类型(狗和猫)实施一次"树皮".在运行时,我们能够遍历动物列表并动态选择要采用的分支.
===在文件animal.code ===
- Animals can "bark"
Run Code Online (Sandbox Code Playgroud)
===在文件tree.code ===
- Trees have "bark"
Run Code Online (Sandbox Code Playgroud)
===在文件myprogram.code ===
import animal.code
import tree.code
a = new-dog()
a.bark() //Make the dog bark
…
t = new-tree()
b = t.bark() //Retrieve the bark from …Run Code Online (Sandbox Code Playgroud) 我不明白Lisp是如何编译和动态的.对于能够操作,修改和生成代码的语言,是否需要进行解释?语言是否可以完全编译并且仍然是动态的?或者我错过了什么?Lisp做的是什么允许它既编译又动态?
我最近开始使用SBCL学习Common Lisp.如何将我的Lisp程序编译成Windows二进制文件?