2012-09-19 21 views
9

W Clojure, jaka jest różnica między fn i fn *? Widzę fn *, gdy składnię zacytuję funkcję utworzoną za pomocą makra #. Na przykład, w REPL:Jaka jest różnica między fn i fn *?

user=> `#(inc %) 
(fn* [p1__342__343__auto__] (clojure.core/inc p1__342__343__auto__)) 

Czy to po prostu wykorzystywane do celów diagnostycznych w celu określenia, że ​​funkcja została stworzona przez # zamiast fn bezpośrednio?

+1

Zobacz http://stackoverflow.com/questions/10767305/what-is-fn-and-how-does-clojure-bootstrap – noahlz

Odpowiedz

17

Zgodnie z this post on google groupsfn* jest prymitywną formą tworzenia funkcji, a na jej szczycie wbudowane jest makro służące do implementacji funkcji wyższego poziomu, takich jak destrukturyzacja.

+1

Dzięki! To było na mojej liście rzeczy do zbadania o Clojure ... –

+1

To była prawdziwa suka, którą można znaleźć. Googling fn * oczywiście nie działał. Na pomoc przyszedł DuckDuckGo :) –

Powiązane problemy