Clojure では、fn と fn* の違いは何ですか? # マクロで作成された関数を構文引用符で囲むと、fn* が表示されます。たとえば、REPL では次のようになります。
user=> `#(inc %)
(fn* [p1__342__343__auto__] (clojure.core/inc p1__342__343__auto__))
これは単にデバッグ目的で使用され、関数が直接 fn ではなく # によって作成されたことを識別しますか?
Clojure では、fn と fn* の違いは何ですか? # マクロで作成された関数を構文引用符で囲むと、fn* が表示されます。たとえば、REPL では次のようになります。
user=> `#(inc %)
(fn* [p1__342__343__auto__] (clojure.core/inc p1__342__343__auto__))
これは単にデバッグ目的で使用され、関数が直接 fn ではなく # によって作成されたことを識別しますか?
this post on google groups に よるとfn*
、関数を作成するための原始的な形式でありfn
、その上に構築されたマクロであり、分解などの高レベルの機能を実装します。