【发布时间】:2011-10-09 19:58:14
【问题描述】:
浏览 Common Lisp 源代码我注意到人们最常使用#'foo,而'foo 就足够了——也就是说,只要接受函数指示符,他们就会选择传递函数。
当然,当foo 是通过flet 等定义时,#'foo 是必需的。我了解这一切的机制——我的问题是风格之一。是否只是因为人们不想考虑'foo 与#'foo,所以他们使用后者,因为前者有时不起作用?即使是这样,它也无法解释#'(lambda ...) 的使用,因为#'总是在那里是不必要的。
CL 有时因为#' 而被称为丑陋的,而且大多数新手都没有意识到(我敢说)大多数情况下它是不必要的。我不是新手,但我碰巧更喜欢'foo。为什么我不寻常?如果我发布一些代码给funcall 和apply 赋予符号,我会被嘲笑和羞辱吗?我正在考虑在我所在的地区开设一个匿名功能指示符章节。我怀疑人们想使用函数指示符,但由于同侪压力,不敢“公开”。
【问题讨论】:
-
顺便说一下,有些函数可能会接受不接受的函数指示符。例如,
complement只接受函数。这意味着(position-if (complement f) …)实际上并不等同于(position-if-not f …),因为后者可以接受f的符号,但前者不能。我刚刚在回复Split a string even if the last character is a delimiter 时偶然发现了这一点。
标签: lisp common-lisp quote