Concurrent Clean : Finger trees : 正格リスト
Finger treeの定義は、次のようにしていたのだけれど、
:: Tree v a = Empty | Single !a | Deep v !(Digit a) (Tree v (Node v a)) !(Digit a) :: Digit a :== [a]
Digitの所が遅延リストだったので、不必要な非正格性が残ってしまっていた。そこで、正格リストを使って書き直してみた。
:: Digit a :== [!a!]
結構修正個所が多かった。