- 関数型プログラミング言語Haskell Part27_©2ch.net
581 :デフォルトの名無しさん[sage]:2015/02/18(水) 00:45:49.04 ID:MRGBBtoY - >>578
Zipper と Iterator とは比べるものではありません。 どちらもデータ構造に関することですが、全く違います。 Iterator は「アクセス方法」の一種で、全要素を一列に並べて順に辿ります。 たとえばツリー構造の走査(traverse)を考えてみてください。 他のアクセス方法としては、たとえばランダムアクセスなどがあります。 一方、Zipper は「データ構造」の一種で、ある要素を基準に その前方の構造と後方の構造に分けて管理します。 他のデータ構造としては、たとえばリスト構造などがあります。 アクセス方法とデータ構造を比較する人はいませんよね。 両者は協調するものです。 微分の話は、簡単に言えば、代数的データ型に微分を使うことで、 Zipper 構造が機械的に(記号操作だけで)作れるということです。 (代数的だから微分できる!) WikiBooks の Haskell/Zippers のページにも解説がありますが、 代数の意味や微分に関しては私は下記のサイトの方が分かりやすいと思います。 http://chris-taylor.github.io/blog/2013/02/10/the-algebra-of-algebraic-data-types/ Part3 に微分で Zipper を作る話がありますが、Part1 から順に読んでいくことを勧めます。
|
|