2013-01-15 272 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