【发布时间】:2010-10-24 19:07:23
【问题描述】:
我是一个方案新手,我正在尝试编写一个函数,该函数接受一个函数名和一个表达式,并将函数名绑定为表达式的第一个参数。
IE:
类似:
(bind-function-name '+ '(param 'a "First"))
会产生一个评估的 lambda
(param '+ 'a "First")
到目前为止我想出的最好的:
(define (bind-function-name name cmd)
(let ((func (car cmd)) (args (cdr cmd)))
(lambda ()
(apply func (cons name args)))))
这似乎不起作用,因为它抱怨函数名是一个符号。
我确定这很简单,但我只是错过了一些东西,我想有人可以帮助我。
【问题讨论】:
-
可以叫它
(bind-function-name '+ (list param 'a "First"))吗? -
确实有效,有什么办法可以将它与引用的第二个参数一起使用以减少冗长?
-
好吧,你总是可以使用准引用:
`(,param a "First")
标签: scheme