私はまだ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 のスコープは非常に厳密に定義されていますが、それでも非常に反機能的であると感じています。拘束状態。 バインディングをいつ使用するかの基準は何ですか?