list - 喜欢 first 和 rest 而不是 car 和 cdr 的 lisp 如何接近像 cdaddr 这样的组合?

标签 list clojure lisp cons cdr

Lisp 社区中最大的分歧之一是我们是否应该有 carcdrfirstrest .传统的好处之一carcdr是我们可以将它们组合起来产生类似 cdaddr 的可发音函数.不使用的 Lisps 怎么办 carcdr ,例如 Clojure,通常与 first 形成这样的组合和 rest ?有没有共识?

最佳答案

无论如何,Clojure 根本不需要 caddaadr 和 friend ,因为没有人只用 cons 单元构建数据结构。该语言确实有 firstnext 中任意两个的组合,命名为 ffirstfnextnnext nfirst,我想这是很早就添加的,因为我们假设我们想要像 cadr 这样的东西,但我从未见过它们在现实生活中使用。相反,经常使用解构。

在极少数情况下,您需要深入了解由嵌套序列构建的结构,解构通常仍会生成可读代码,而且手写代码也不是什么大负担。这也是对您的一个很好的提示,也许您应该对事物进行更多抽象,而不是直接使用这么多层的原始组合器。

关于list - 喜欢 first 和 rest 而不是 car 和 cdr 的 lisp 如何接近像 cdaddr 这样的组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65969462/

相关文章:

java - 删除后元素的 ID 会怎样?

python - 尝试将 DataFrame 写入 Feather 时出错。 feather 是否支持列表列?

list - 两个矩阵的乘法

python - 添加到字典列表 - python

Clojure + Clojurescript : Macro to read code of current file

clojure - 在project.clj中指定不同的数据库地址

pointers - clojure中的指针循环

recursion - 为什么我的迭代高阶过程比等效的递归过程给出更精确的结果?

列出与文件关联的缓冲区?

python - 无法在正确位置连接两个列表