3

Clojure と関数型プログラミングの両方が初めてです。ループ構造を理解しながら、最善を尽くしました。

私はそれを使用できます。それで書かれたコードを見て出力を伝えることができますが、理解できないのは、どのように機能するのですか?

パラメータを使用して無名関数を記述し、同じアリティと新しい値で末尾に recur を保持するのと同じですか?

それは組み込みマクロですか、それとも何かですか?

4

2 に答える 2

7

実際にloopは、関数でもマクロでもありません。特殊な形状です。letのターゲットとして機能することを除いて、(これも特別な形式です) と同じように機能しrecurます。

関数、マクロ、および特殊な形式を区別する 1 つの方法は、それらの引数がどのように評価されるかを調べることです。

  • 関数の引数は常に評価され、結果が関数に渡されます。
  • マクロ引数は、マクロが新しい未評価の形式に展開されるまで評価されません。
  • スペシャル フォームの引数は渡されたときに評価されませんが、スペシャル フォームはそれらを内部的に評価することを選択する場合と選択しない場合があります。
于 2013-04-08T18:41:47.297 に答える