ジッパーとは何ですか?また、それはツリーのような構造とどのように関連していますか?


15

私はLYAHの章を読んでいましたが、それは私にはあまり意味がありませんでした。ジッパーはツリーのような構造を任意にトラバースできることを理解していますが、それについて明確にする必要があります。また、ジッパーは任意のデータ構造に一般化できますか?


3
これはおそらく、コンピューターサイエンスにとってより適切です。ただし、ジッパーを一般化する作業には、かなりの技術的な機械が必要です。
デイブクラーク

6
ジッパーは、特にツリーを横断するときは、常に閉じておかなければならないものです。
アンドレイバウアー

回答:


14

一般に、ジッパーは穴の開いたデータ構造です。ジッパーはデータ構造のトラバース/操作に使用され、穴はトラバースの現在の焦点に対応します。通常、検討中のデータ構造の要素もあるため、(リスト)ジッパーとリスト、または(ツリー)ジッパーとツリーがあります。ジッパーにより、プログラマーはデータ構造内を効率的に移動でき、フォーカスされている要素を置き換えることさえできます。ジッパーとフォーカスの要素のペアは、要素を穴のフォーカスに配置すると元のデータ構造が得られるという制約を満たします。

ジッパーは、任意の帰納的データ型に一般化できます。この概念は、タイプインデックス付きの方法で定義できます(タイプインデックス付きデータ型を参照)。それらはまた、データ構造の導関数の考えに関連していて、カテゴリー理論の観点から研究されました。


2

ジッパーは一般に2つのものです。それは、穴のある構造体であり、構造体のどこにいるかを表すフォーカスであり、その焦点に到達した方法を記録するパスと一緒になります。(このパスはLYAHのパンくずリストです。)

パスは、実際に構造に変更を適用する方法です:「下に移動し、左に移動し、値を増やします」。繰り返し(「上がる」を適用することによってgo_upではユエの論文この時点で)、あなたはあなたの手順をたどることができ、元の構造の新しい、変異し、コピーで終わります。

実際、これらは他の構造に一般化できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.