2013-12-19 30 views
5

我想嘗試懶惰的表情評估,但我現在不想潛入Haskel。請幫助您找到其他語言具有此功能嗎?什麼編程語言支持懶惰評估?

+4

SO!= Google.com –

+0

哪個範式你要的翻譯?功能與否? – SliceSort

+0

SliceSort,功能可能,但我不知道。我更喜歡從嘗試真正的編程語言學習東西,而不是閱讀文章和理論文章。 – exebook

回答

3

你可以在很多語言中模擬它。例如,this是C++的通用惰性評估程序。正如文章所說,它也支持.NET語言(這就是本文試圖模仿的內容)。例如,C++表達式模板是其他形式的惰性評估。

3

Python的生成器很懶。

任何數據流語言都是懶惰的。

還有Lazy Racket。球拍是計劃的衍生品。

SWI Prolog有freeze predicate,它暫停對邏輯變量的評估直到需要爲止,例如,此:

fibs(X):- X = [0,1|Z], genfibs(X, Z). 

genfibs([A|Y], Z):- Y = [B|Z], freeze(Z, (C is A+B, Z = [C|W], genfibs(Y, W))). 

測試:

13 - 的FIB(X),長度(A,15),追加(A,_,X),writeln(A)。
[0,1,1,2,3,5,8,13,21,34,55,89,144,233,377]
凍結(_G2517,(_G2582是233 + 377 ,_G2517 = [_ G2582 | _G2595],genfibs([377 | _G2517],_G2595)))。

這是Haskell的

fibs = x where x = 0 : 1 : (gen x) 
       gen (a: [email protected](b:_)) = (a+b) : (gen y)