Hatena::Grouprubyist

Going My Ruby Way このページをアンテナに追加 RSSフィード

Ruby ロゴ (C) Ruby Association LLC

2011年07月25日(月)

無限リスト

| 18:28 |  無限リスト - Going My Ruby Way を含むブックマーク はてなブックマーク -  無限リスト - Going My Ruby Way  無限リスト - Going My Ruby Way のブックマークコメント

無限リスト(遅延ストリーム)。

理解のため、下の参考書籍を参考(というかほとんど同じですが)に書いてみました。

#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

class LazyStream
  def initialize(value)
    @value = value
    @next  = lambda { self.class.new(value.next) }
  end

  def next
    @next.call
  end

  attr_reader :value
end

l = LazyStream.new(100)

10.times do
  p l.value
  l = l.next
end

# vi:set ts=2 sw=2 et fenc=UTF-8:

-----

Ruby Magazine 34号 に遅延評価の面白い記事が載っていました。

-----

参考書籍