Greenbear Diary - RubyでZipperを実装してみた

screenshot

# zipperを作る zipper = Zipper.make(1, 2, 3) # 最初は、0番目にカーソルがある zipper.get #=> 1 # nextを呼ぶと、1番目にカーソルが移動する zipper.next.get #=> 2 んで書き換えもできるのですが、「副作用なし」なので、書き換えると丸ごと別のzipperができます。 orig = Zipper.make(1, 2, 3) copy1 = orig.next.set(100) copy2 = orig.next.set(200) copy1.to_a #=> [1, 100, 3] copy2.to_a #=> [1, 200, 3] 「なんだか遅そう」って...

http://mono.kmc.gr.jp/~yhara/d/?date=20080807

RubyでのZipper実装。

http://b.hatena.ne.jp/entry/http://mono.kmc.gr.jp/~yhara/d/?date=20080807