0

私は次のタイプを持っています:

data Tree a =   Empty |
                Branch {    key     :: a,
                            balance :: Int8,
                            left    :: Tree a,
                            right   :: Tree a,
                            up      :: Bool    --used internally to stop updating balance
                       }
                deriving (Eq)

および次のパターンに一致する関数:

roll (Branch y (-2) l (Branch ry 1 (Branch rly 0 Empty Empty _) rr _) _) = ...

Empty Empty内部が唯一の可能な(Branch rly 0 Empty Empty _)ケースですが、私は疑問に思っていました-フォームを次のように一般化します:

roll (Branch y 2 (Branch ly (-1) ll (Branch lry 0 lrl lrr _) _) r _) = ...

ランタイムが一致する必要がなくlrl、?lrrEmpty

4

2 に答える 2

0

はい、速くなります。それだけの価値があるかどうかは、ベンチマークだけが判断できます。

于 2013-08-11T22:23:45.220 に答える