Haskell Wiki でZipperの記事を読んでいますが、次のようにup
定義されているメソッドを理解できません。
data Tree a = Fork (Tree a) (Tree a) | Leaf a
data Cxt a = Top | L (Cxt a) (Tree a) | R (Tree a) (Cxt a)
type Loc a = (Tree a, Cxt a)
up :: Loc a -> Loc a
up (t, L c r) = (Fork t r, c)
up (t, R l c) = (Fork l t, c)
パターンup (t, L c r)
ではt
、サブツリーにフォーカスc
がありますか、現在のフォーカスに穴があるc
コンテキストですか? ピントも上がればいいじゃないですか。