【问题标题】:How can you define 'λ' as alias for 'lambda' in Scheme?如何在 Scheme 中将 'λ' 定义为 'lambda' 的别名?
【发布时间】:2022-01-06 14:38:03
【问题描述】:

我知道我可以像这样创建别名: (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)))

如果有人知道如何做到这一点或能指出我正确的方向,我将不胜感激。我知道这在 Racket 中是开箱即用的,但我想知道如果可能的话,如何实现它。

【问题讨论】:

    标签: scheme alias


    【解决方案1】:

    你必须使用宏

    (define-syntax λ
      (syntax-rules ()
        ((_ args body ...)
         (lambda args body ...))))
    

    【讨论】:

    • 成功了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-05-30
    • 2015-08-09
    • 2015-06-17
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多