2013-01-15 188 views
1

在Opa中,可以部分应用函数。但是,我想提供一个函数及其所有参数,并返回一个不带参数的函数。例如:Opa:高阶函数应用

function make-thunk(f, a) { function() { f(a) } } 

上面的代码工作正常,但它有一个问题:它只适用于只需要一个参数的函数。我很好奇Opa是否有可能使上面更通用,所以这个函数可以用于任意形式的函数。

我无法在Opa API,论坛,IRC,Github或SO上找到apply-(scheme)或call-(prolog)类似函数的信息,所以在这里我希望我错过了某个地方的某些东西。 ;-)(有@lazy关键字的一些痕迹,但没有解释或文档,所以我没有保留参考,对不起。)

为了进一步阐明/说明:如果Opa是计划,我会写下面的代码:

(define (make-thunk f . args) 
    (lambda() (apply f args))) 

回答

1

如果你想的参数任意数量传递给make-thunk,那么你必须使用一个元组:

function f((a,b,c)) { 
    ... 
} 

args = ("a","b","c") 
make-thunk(f, args) 

顺便说一句,你在哪里找到提到要@lazy

+0

@lazy大概是在IRC上提到的,因为我在我的浏览器历史记录中找不到相关链接:-) – rdewaele