【发布时间】:2010-09-25 07:24:08
【问题描述】:
是否可以在 Scheme 中编写宏(例如 define-syntax),它将采用如下表达式:
(op a b c d e f g h i j)
然后将这样的表达式作为输出?
(op (op (op (op (op (op (op (op (op a b) c) d) e) f) g) h) i) j)
当然,对于任意长度。鉴于这样的模板,我想不出办法:
(define-syntax op
(syntax-rules ()
[(_) 'base-case]
[(v1 v2 ...) 'nested-case??]))
【问题讨论】:
-
我很好奇。这只是一个理论上的问题,还是您有一个有趣的用例?一般来说,这种包装可以通过 foldLeft 来实现。
-
嗯,好点。我问这个主要是因为我没有想到你的方式=P。我没有意识到这正是 foldl 所做的。
标签: scheme macros nested define-syntax