6
在SML,以下是可能的造型惰性編程,懶惰的數據類型
// Have a datatype to wrap a computation
datatype 'a susp = Susp of (unit -> 'a)
// A function to hold the computation
fun delay(f) = Susp(f)
我知道,蓋可使用Blocks寫,
int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
return num * multiplier;
};
因此,我認爲我可以使用它作爲函數參數。下一步將是如何使用沒有實參的函數(unit value,例如SML fn() =>
)並創建惰性數據類型,如上所述。
這是可能的還是我應該追求一種更明顯的方式?
的最終目標是效仿來自SML暫停計算行爲,
let val x = Susp(fn() => horribleComp(345))
in
force(x) + force(x)
end
其中力(x)是
fun force (Susp(f)) = f()
謝謝我不知道你是否可以使用這樣的塊和typedef。我將首先嚐試後一種方式,如果需要與後續項目的模板一起工作。 – phwd 2011-05-09 19:48:25