Me gustaría poder definir lambdas usando la sintaxis Lisp común, en Clojure. Por ejemplo:¿Cómo implementar lambda como una función llamada "lambda" en Clojure?
(lambda (myarg)
(some-functions-that-refer-to myarg))
Esto debe dar lugar a la misma como:
#(some-functions-that-refer-to %)
En mi caso, sé que siempre voy a tener exactamente un arg, así que quizás eso simplifica las cosas. (Pero se puede llamar cualquier cosa - "myarg" o lo que sea.)
Sospecho que una solución viable es "(defmacro lambda ...". Si es así, no estoy seguro de la mejor manera de proceder . ¿Cómo traducir el nombre limpiamente a arg%? Y cómo terminar con la función correcta?
O, ¿hay una solución simple que escribir mi propia macro que en realidad re-implementa de Clojure ... lambda?
Gracias Brian, esto es exactamente lo que necesitaba. Me avergüenza decir que tenía un punto ciego aquí ... Estoy tan enamorado del azúcar #() que olvidé que está el fn formal. Ahora, realmente realmente, realmente quiero usar el enfoque macro, porque estoy en una situación en la que me veo forzado a ejecutar un simple código Lisp que usa "lambda". Y la macro que escribiste es precisamente lo que necesitaba. ¡Muchas gracias! – dirtyvagabond
Suena divertido, buena suerte. :) –