Mi piacerebbe essere in grado di definire lambda usando la sintassi comune del Lisp, in Clojure. Per esempio:Come implementare lambda come una funzione chiamata "lambda" in Clojure?
(lambda (myarg)
(some-functions-that-refer-to myarg))
Questo deve comportare lo stesso:
#(some-functions-that-refer-to %)
Nel mio caso, io so avrò sempre esattamente un arg, così forse che semplifica le cose. (Ma può essere chiamato qualsiasi cosa - "myarg" o qualsiasi altra cosa.)
Sospetto che una soluzione praticabile sia "(defmacro lambda ...". In tal caso, non sono sicuro del modo migliore di procedere . Come tradurre in modo pulito il nome arg al%? E come finire con il corretto funzionamento?
Oppure, c'è una soluzione più semplice che scrivere il mio macro che in realtà ri-implementa di Clojure ... lambda?
Grazie Brian, questo è esattamente ciò di cui avevo bisogno. Sono imbarazzato nel dire che ho avuto un punto cieco qui ... Sono così innamorato dello zucchero #() che ho dimenticato che c'è il fn formale. Ora, in realtà, voglio davvero usare l'approccio macro, perché sono in una situazione in cui sono costretto a eseguire un semplice codice Lisp che utilizza "lambda". E la macro che hai scritto è esattamente ciò di cui avevo bisogno. Grazie mille! – dirtyvagabond
Sembra divertente, buona fortuna. :) –