Lisp 社区中最大的分歧之一是我们是否应该拥有car
andcdr
或first
and rest
。car
传统和的好处之一cdr
是我们可以将它们结合起来产生可发音的功能,例如cdaddr
. 不使用car
and的 Lisps cdr
,例如 Clojure,通常如何与first
and形成这样的组合rest
?有没有共识?
问问题
120 次
1 回答
8
无论如何,Clojure 根本不需要 caddaadr 和朋友,因为没有人仅仅从 cons 单元构建数据结构。该语言确实具有first
and next
、命名ffirst
、fnext
、nnext
和中的任意两个组合,nfirst
我想这些是很早就添加的,因为假设我们想要像 cadr 这样的东西,但我从未在现实生活中看到它们使用过。相反,经常使用解构。
在极少数情况下,您需要深入了解由嵌套序列构建的结构,解构通常仍会产生可读的代码,但将其写出来也不是什么大负担。这也是对您的一个很好的提示,也许您应该更多地抽象事物,而不是直接使用如此多的原始组合器层。
于 2021-01-30T15:08:11.383 回答