私はSchemeで怠惰なリストを作りたかったのです。これは私がこれまで持っていたものです。Eager言語でレイジーリストを作成するにはどうすればよいですか?
;; Constructor for Pairs
(define (cons-stream a b)
(cons a (λ() b)))
;; Selectors
(define (car-stream a-stream)
(car a-stream))
(define (cdr-stream a-stream)
((cdr a-stream)))
;; Lazy List using the pairs
(define (lazy-list from)
(cons-stream from (lazy-list (+ from 1))))
;; Take function
(define (take a-lazy-list number)
(define (take-helper i)
(if(= i number)
empty
(cons (car a-lazy-list) (take-helper (+ i 1)))))
(take-helper 0))
遅延リストに伴う問題は、スキーム最初無限再帰に入る手続きを引き起こす(1)からの遅延リスト(+)内の式を評価することです。
con-streamを評価なしでこの内部表現にする方法はありますか?
ダーンが、今私は、あまりにも、スキームを学ぶ:-D –
そのないスキームたいが、このページはF#で怠惰リストの実装を持っていますhttp://en.wikibooks.org/wiki/F_Sharp_Programming/Caching# Lazy_Values – Juliet
これは宿題に関する質問ですか? – kanak