2012-04-19 225 views
2

我想知道是否有辦法在Oz中的變量中綁定整個函數調用。 例如,我有:有沒有辦法在Oz中存儲函數/過程調用?

fun {F1 A1 A2} 
    A1+A2 
end 

和局部變量X

我想要做什麼,是存儲呼叫(AS-IS){F1 1 2}X,而不是它的結果:3,讓 我可以通過某種方式參照X再打電話再次{F1 1 2}

這是可能在奧茲嗎?如果是這樣,怎麼樣?

謝謝你的回答。

回答

2

最簡單的方法是動態創建一個不帶參數的函數,例如

fun {CreateCall F A1 A2} 
    fun {$} 
     {F A1 A2} 
    end 
end 

fun {F A1 A2} 
    A1 + A2 
end 

C = {CreateCall F 1 2} 

{Show {C}} 

功能CreateCall創建並返回一個匿名無參函數與給定的參數調用F。 (這種技術類似於像Haskell這樣的語言中的部分函數應用。)

可以使用庫函數Procedure.applydoc)將其推廣到任意數量的參數。如果你想這樣做並需要幫助,請告訴我。

+0

謝謝你,這個伎倆。 – mhourdakis 2012-04-26 16:43:10

相關問題