【发布时间】:2012-11-19 17:32:50
【问题描述】:
几天来,我一直在为我的计划中的一个想法而苦苦挣扎。我经常以
的风格编写代码(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”。 .." 到 "name ..." 参数。 我可以想到两种好方法来做到这一点。第一个需要 Y 组合器,我真的不想使用它们。另一种方式需要我以某种方式获取“name ...”和“args ...”中的变量数量如果有人可以帮助我解决这个问题,我将不胜感激。
【问题讨论】:
标签: recursion lisp scheme default tail