2013-12-19 3 views
5

나는 게으른 표현의 평가를 해보고 싶지만 지금은 하스켈을보고 싶지 않다. 제발, 다른 언어에서이 기능을 찾을 수 있도록 도와 줄 수 있습니까?어떤 프로그래밍 언어가 지연 평가를 지원합니까?

+4

SO! = Google.com –

+0

어떤 패러다임 당신이 원하는 게의 번역은? 기능적이든 아니든? – SliceSort

+0

SliceSort, 아마도 기능이 있지만 잘 모르겠습니다. 나는 기사와 이론 논문을 읽는 것보다 실제 프로그래밍 언어를 시도하는 것을 선호한다. – exebook

답변

3

여러 언어로 시뮬레이션 할 수 있습니다. this은 C++의 일반적인 지연 평가 기입니다 (예 :). 기사가 말했듯이, .NET 언어에서도 지원됩니다 (이 기사가 흉내내는 것).
C++ 표현식 템플릿은 예를 들어 게으른 평가의 다른 형태입니다.

3

파이썬의 생성기는 게으르다.

모든 데이터 흐름 언어는 게으릅니다.

여기도 Lazy Racket입니다. Racket은 Scheme 파생물입니다.

SWI 프롤로그는 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))).

이 하스켈의이

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