¿Cómo se puede definir ‘λ’ como sinónimo de ‘lambda’ en Scheme?
Sé que puedo crear un alias así:
(define first car)
es decir (first '(a b c))
=> a
Pero esto no funcionará para ciertas palabras clave, no puedo decir (define alias define)
o (define λ lambda)
Pero lo que me gustaría hacer es definir λ
como un alias para lambda
para que pueda decir:
(define add
(λ args-list
(apply + args-list)))
en lugar de lo habitual
(define add
(lambda args-list
(apply + args-list)))
Agradecería si alguien sabe cómo hacer esto o puede señalarme en la dirección correcta. Soy consciente de que esto está fuera de lo común con Racket, pero quiero saber cómo se puede implementar esto, siempre que sea posible.
davy.ai
Para definir un alias para una palabra clave utilizando la sintaxis
define
, se puede usar el acento grave`
y la coma,
para crear una cita de sintaxis. Aquí está un ejemplo de cómo definirλ
como un alias paralambda
:Esto define una regla de sintaxis que reemplaza cualquier aparición de
(λ args-list body)
con(lambda args-list body)
.Con esta definición en su lugar, ahora puede usar
λ
como un alias paralambda
en su código:Esto definirá
add
como una función que acepta cualquier número de argumentos y aplica el operador+
a ellos usando la funciónapply
.Tenga en cuenta que este enfoque solo funciona para definir alias para palabras clave que se usan en definiciones de funciones. No funcionará para otras palabras clave como
define
oset!
. Para definir alias para estas palabras clave, deberá utilizar un enfoque diferente, como definir macros.