Я написал структуру данных,
data Bit a = Add a (Bit a) | End deriving (Show,Eq)
data Bits a = Bits (Bit a) (Bit a) deriving (Show,Eq)
, но изо всех сил пытаюсь создать для них карту и функцию сворачивания.
Пока у меня есть это:
instance Functor Bit
where
fmap _ (End) = End
fmap f (Add x (y)) = Add (f x) $ (fmap f y)
instance Foldable Bit
where
foldr _ z (End) = z
foldr f z (Add x (y)) = f x $ foldr f z y
instance Functor Bits
where
fmap _ (Bits (End) (End)) = Bits (End) (End)
fmap f (Bits (Add x (y)) (End)) = error "dont know what to put here"
instance Foldable Bits
where
foldr _ z (Bits (End) (End)) = z
foldr f z (Bits (Add x (y)) (End) = Bits (f x $ f y) (End)
foldr f z (Bits (Add x (y)) (Add a (b)) = error "dont know"
Есть идеи, как их реализовать?Также не уверен, что я что-то упустил, поэтому, пожалуйста, дайте мне знать, если это так.