您如何在 Scheme 中将“λ”定义为 'lambda' 的别名?
How can you define 'λ' as alias for 'lambda' in Scheme?
我知道我可以像这样创建一个别名:
(define first car)
即 (first '(a b c))
=> a
但这对某些关键字不起作用,我不能说 (define alias define)
或 (define λ lambda)
但我想做的是将 λ
定义为 lambda
的别名,这样我就可以说:
(define add
(λ args-list
(apply + args-list)))
而不是通常的
(define add
(lambda args-list
(apply + args-list)))
如果有人知道如何执行此操作或能指出正确的方向,我将不胜感激。我知道这是开箱即用的球拍,但我想知道如何实现它,前提是它是可能的。
您必须使用宏
(define-syntax λ
(syntax-rules ()
((_ args body ...)
(lambda args body ...))))
我知道我可以像这样创建一个别名:
(define first car)
即 (first '(a b c))
=> a
但这对某些关键字不起作用,我不能说 (define alias define)
或 (define λ lambda)
但我想做的是将 λ
定义为 lambda
的别名,这样我就可以说:
(define add
(λ args-list
(apply + args-list)))
而不是通常的
(define add
(lambda args-list
(apply + args-list)))
如果有人知道如何执行此操作或能指出正确的方向,我将不胜感激。我知道这是开箱即用的球拍,但我想知道如何实现它,前提是它是可能的。
您必须使用宏
(define-syntax λ
(syntax-rules ()
((_ args body ...)
(lambda args body ...))))