prefiero fuertemente el estilo -Heavy lambda
para la enseñanza, ya que hace que la creación de la función más explícita, como dice Jay.
Al aprender, las funciones simples con las que comienza con atom?
son define
d en el nivel superior. Esto significa que es posible, y aún más compacto, crear la función con el defun
-style define
que mencionas.
Sin embargo, cuando empiece a usar funciones como valores de primera clase, por ejemplo, como un argumento para map
, verá el lambda
por primera vez, y podría parecer más extraño y mágico de lo que realmente es.
En lugar de eso, si ha definido sus funciones con lambda
todo el tiempo, es menos que un salto para ver que las funciones son como cualquier otro valor.Que se encuentren en el lado derecho de la define
con bastante frecuencia, pero no son diferentes de un número o una constante citado:
(define x 1)
(define l '(2 3 4 5))
(define s (cons x ls))
(define f (lambda (n) (+ n 2)))
Por supuesto, el lenguaje es compatible con ambas formas, por lo que se reduce a estilo, finalmente, . Para mí, hay una consistencia atractiva en el uso de define
cuando todas sus funciones están hechas con lambda
: el primer argumento es siempre un símbolo, y el segundo argumento es cualquier expresión anterior. Y el hecho de que lambda
es como cualquier expresión antigua es una de las cosas más importantes que cualquier programador funcional debe aprender.
lambda es el alfa y omega – eljenso