比起像cdaddr这样的car和cdr的组合,那些更喜欢先休息的lisps如何?
Lisp 社区中最大的分歧之一是我们是否应该拥有carandcdr或firstand rest。一个传统的优势car和cdr是我们可以结合他们产生像pronoucible功能cdaddr。不使用carand 的Lisps cdr,例如 Clojure,通常如何与firstand形成这样的组合rest?有没有共识?
回答
无论如何,Clojure 根本不需要 caddaadr 和朋友,因为没有人仅仅从 cons 单元构建数据结构。语言确实有任意两个的组合first和next命名ffirst,fnext,nnext,和nfirst,这是很早就加入上我想是因为它假定我们想要的东西像CADR,但我从来没有看到他们在现实生活中使用。相反,解构被经常使用。
在极少数情况下,您需要深入了解由嵌套序列构建的结构,解构通常仍会生成可读代码,但手写代码也不会造成太大负担。这也是对您的一个很好的提示,也许您应该对事物进行更多抽象,而不是直接使用如此多的原始组合器层。
- Also destructuring helps to reach into things.
- @cfrick Good point. I suggest adding that as an answer, or editing it into mine.
THE END
二维码