指の木に関しては、この論文で見られ、 Eric Lippert によるこの投稿で言及されています。
各指のある種のリンクされたリスト構造とは対照的に、明示的なタプル配置が使用される理由がわかりません。つまり、One(x), Two(x, y), Three(x, y, z), Four(x, y, z, a)
最適ではない deque オブジェクトと do を定義するだけでなく、なぜ定義するのLessOptimalDeque.AddLeft(x)
でしょうか。
どういうわけか遅いですか?つまり、一部のノード/ノードのグループのメモリを再利用するデータ構造を使用できますか?
論文では、次のようにも言及されています。
演習 1. 上記のプレゼンテーションでは、簡単にするために数字をリストとして表しました。より正確で効率的な実装では、型を使用します
data Digit a = One a
| Two a a
| Three a a a
| Four a a a a
Digit のこの定義を使用するには、上記の定義を作り直してください。
なぜそれがより効率的であるかはわかりません。それは作者が使用していた関数型言語に関連するものだけですか?それ以外の場合は、上で提案したデータ構造を使用して行うこともできますか?
編集
このように指を実装するのはどうですか?