2013-12-19 9 views
5

私は怠惰な表現の評価を試してみたいと思いますが、今はハスケルにダイビングしたくありません。他の言語にこの機能が含まれていることを見つけるのを助けてください。どのようなプログラミング言語が遅延評価をサポートしていますか?

+4

の翻訳です!= Google.com –

+0

は、あなたがどのパラダイムをしたいですか?機能的かどうか? – SliceSort

+0

機能はおそらくSliceSortですが、わかりません。私は記事や理論論文を読むのではなく、実際のプログラミング言語を試してみることを好む。 – exebook

答えて

3

多くの言語でシミュレーションできます。 thisは、C++の一般的な遅延評価プログラムです。記事には、.NET言語でもサポートされているように(記事でエミュレートしようとしていることがあります)。
C++式テンプレートは、たとえば、遅延評価の他の形式です。

3

Pythonのジェネレータは怠惰です。

すべてのデータフロー言語は遅延です。

Lazy Racketもあります。ラケットはSchemeの派生物です。

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)))。

これはSO Haskellの

fibs = x where x = 0 : 1 : (gen x) 
       gen (a: [email protected](b:_)) = (a+b) : (gen y) 
関連する問題