几天来,我一直在为计划中的一个想法而苦苦挣扎。我经常以以下方式编写代码
(define fib_h (lambda (n a b) <body ...>))
(define fib (lambda (n) (fib_h n 0 1)))
而且我认为这是将自己介绍给宏的好方法。不幸的是,关于如何将其宏化,这似乎有点超出我的理解。我想我在某一时刻接近了
(define-syntax dvf
(syntax-rules ()
((_ f (args ...) (name value) ... body)
<stuff that didn't work>)))
这将定义一个函数“f”,该函数将采用“args ...”或“args ... name ...”,然后,如果它仅采用“args ...”,则应用“value ...”到“名称...”参数。我可以想到两种好方法来做到这一点。第一个需要 Y 组合器,我真的不想使用它们。另一种方式需要我以某种方式获取“name ...”和“args ...”中的变量数量如果有人可以帮助我解决这个问题,我将不胜感激。