dno*_*len 21
Lisps中的caddr通常以相当于解构的方式使用.Clojure无法支持解构,因此caddr的用处不大.
(let [[_ _ x] [1 2 3 4]]
x) ;; -> 3
Run Code Online (Sandbox Code Playgroud)
编辑:回应@ 4bu3li.
(defn describe-path [[first :as edge]]
`(there is a ~(last edge) going ~first from here.))
Run Code Online (Sandbox Code Playgroud)
没有办法指定w/destruct的最后一个元素,但这与原始问题无关.
seh*_*seh 18
由于caddr
相当于third
在Common Lisp的,我用Clojure看到的最接近的是nth
:
(nth collection 2)
Run Code Online (Sandbox Code Playgroud)
它更通用caddr
,因为它渴望在更多的细胞链结构上工作.但是请注意,这是它不是一个地方,因为它是Common Lisp中.
通常当我需要将概念从一种语言映射到另一种语言时,我会查看http://hyperpolyglot.org/
Clojure包含在Lisp页面上:http://hyperpolyglot.org/lisp
由此看来,似乎与caddr没有直接的类比.
我想最接近的(caddr foo)
是(first (nnext foo))
.但Clojure并不完全具有大多数Lisps所具有的"一切都是列表"的宗教信仰,并缺少来自Common Lisp的重型列表遍历快捷方式,而不支持序列的共享接口.
归档时间: |
|
查看次数: |
1539 次 |
最近记录: |