Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么有些人使用';(lambda而不是just(公共Lisp中的lanbda?_Lisp_Common Lisp - Fatal编程技术网

为什么有些人使用';(lambda而不是just(公共Lisp中的lanbda?

为什么有些人使用';(lambda而不是just(公共Lisp中的lanbda?,lisp,common-lisp,Lisp,Common Lisp,为什么有些人在Common Lisp中使用#'(lambda而不是仅仅使用(lambda)?是否有性能方面的好处 因为,正如Peter Siebel和其他人解释的那样,在CL中,“以下LAMBDA表达式:(LAMBDA()42)在其求值的上下文中扩展为以下内容:(函数(LAMBDA()42))”除了几毫秒的编译时间和几毫秒的读取时间外,没有任何性能优势:) 我认为真正的原因是一致性。如果一个人写(mapcar myfunc…(不仅仅是(mapcar myfunc…),写(mapcar…)(lam

为什么有些人在Common Lisp中使用
#'(lambda
而不是仅仅使用
(lambda
)?是否有性能方面的好处


因为,正如Peter Siebel和其他人解释的那样,在CL中,“以下LAMBDA表达式:
(LAMBDA()42)
在其求值的上下文中扩展为以下内容:
(函数(LAMBDA()42))

除了几毫秒的编译时间和几毫秒的读取时间外,没有任何性能优势:)


我认为真正的原因是一致性。如果一个人写
(mapcar myfunc…
(不仅仅是
(mapcar myfunc…
),写
(mapcar…)(lambda…
)也是很自然的。

@RainerJoswig是的,但确实没有“为什么”这个问题的答案!我理解事情是如何运作的以及它的历史意义,但我的问题很简单:在现代CL中使用
#'
lambda还有合法的原因吗?如果我忘记了这个历史工件,其他CL程序员会不会对我的代码感到奇怪?我对另一个问题的回答触及了这个话题。Stackoverflow并不是讨论语言功能的使用。如果你有实际的编程问题,请发表。@RainerJoswig好的,谢谢。因为你链接的问题回答了我问题中隐含的“发生了什么”部分和“为什么”部分过于哲学化,因此,它应该被标记为该问题的副本。嗯……它可能看起来“一致”,但概念上很明显,
#myfunc
给了我函数名“myfunc”的函数对象,而
(lambda…
只给了我一个函数对象。当我阅读
#(lambda…)
我必须考虑“使用lambda返回的名称获取函数的函数对象,而我实际上从未看到过该名称”,这实际上是它的语义…这只会让人的大脑受伤!你不必这么想:)…但这是我能想到的唯一方法(lambda…)我的思想就是这样运作的,不会产生矛盾:)哦,任何人都可以把普通的
lambda
看作是返回“函数对象”的东西,而不是一个必须经过
#的名称。
或者天知道还有什么。作为奖励,除了省去我的思维技巧之外,它还可以少输入两个字符:)