我仍在努力提高我的 lisp 阅读速度。因此,我的第一个倾向是尝试命名所有内容(通常在 let 绑定中)以弥补我的缓慢理解。在网上的例子中,总是有一些东西被绑定,而另一些东西只是被使用到位。
像这个解析 (1 2 4 + 4) 的愚蠢 s 表达式可以用 let 绑定编写:
(let [first-nums (take (- (count args) 2) args)
last-num (last args)
fun (nth args (- (count args) 2))]
(reduce fun (conj first-nums last-num))))
或没有:
(reduce (nth args (- (count args) 2))
(conj (take (- (count args) 2) args)
(last args)))))
一方面,给“概念”赋予好的域名是我在使用 c 风格语言工作时非常相信的事情,即使 let 的范围定义得非常严格,但它仍然感觉非常反函数绑定状态。 您何时使用绑定的标准是什么?