[英]Difference between CDR, CAR and REST, FIRST and possible implementation?
[英]How do lisps that prefer first and rest to car and cdr approach combinations like cdaddr?
Lisp 社區中最大的分歧之一是我們是否應該擁有car
和cdr
或first
和rest
。 傳統car
和cdr
的好處之一是我們可以將它們結合起來產生像cdaddr
這樣的發音功能。 不使用car
和cdr
的 Lisps,例如 Clojure,通常如何與first
和rest
形成這樣的組合? 有沒有共識?
Clojure,無論如何,根本不需要 caddaadr 和朋友,因為沒有人僅僅從 cons 單元構建數據結構。 該語言確實有first
和next
中任意兩個的組合,命名為ffirst
、 fnext
、 nnext
和nfirst
,我想這些是很早就添加的,因為假設我們想要像 cadr 這樣的東西,但我從來沒有看到它們用於現實生活。 相反,經常使用解構。
在極少數情況下,您需要深入了解由嵌套序列構建的結構,解構通常仍會產生可讀的代碼,但手寫出來也不是什么大負擔。 這也是對您的一個很好的暗示,也許您應該更多地抽象事物,而不是直接使用如此多的原始組合器層。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.