トップページ > プログラム > 2015年02月18日 > MRGBBtoY

書き込み順位&時間帯一覧

79 位/244 ID中時間01234567891011121314151617181920212223Total
書き込み数1000000000000000000000001



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
関数型プログラミング言語Haskell Part27_©2ch.net

書き込みレス一覧

関数型プログラミング言語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 から順に読んでいくことを勧めます。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。