data Tree a = Leaf a | Branch [Tree a]
instance (Eq a) => Eq (Tree a) where
(Leaf a) == (Leaf b) = a == b
(Branch a) == (Branch b) = a == b
_ == _ = False
module Overload where
data Tree a = Leaf a | Branch (Tree a) (Tree a)
deriving (Show)
instance Num (Tree a) where
a@(Leaf _) + b@(Leaf _) = Branch a b
a@(Leaf _) + b@(Branch _ _) = Branch a b
a@(Branch _ _) + b@(Leaf _) = Branch a b
a@(Branch _ _) + b@(Branch _ _) = Branch a b
댓글 0