2012-09-19 16 views
9

En Clojure, ¿cuál es la diferencia entre fn y fn *? Veo fn * cuando cito la sintaxis de una función creada con la macro #. Por ejemplo, en el REPL:¿Cuál es la diferencia entre fn y fn *?

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

Es éste utiliza simplemente para fines de depuración para identificar la función que fue creado por # en lugar de directamente fn?

+1

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

Respuesta

17

De acuerdo con this post on google groupsfn* es una forma primitiva para crear funciones y fn es una macro construida sobre ella para implementar características de mayor nivel como la desestructuración.

+1

¡Gracias! Esto estaba en mi lista de cosas para investigar sobre Clojure ... –

+1

Esta fue una verdadera puta de encontrar. Google buscando fn * obviamente no funcionó. DuckDuckGo vino al rescate sin embargo :) –

Cuestiones relacionadas