- data ConsnoC a = Nil
- | Cons a (ConsnoC a)
- | Snoc (ConsnoC a) a
- foldlC :: (a -> b -> a) -> a -> ConsnoC b -> a
- foldlC f u Nil = u
- foldlC f u (Cons x xs) = foldlC f (f u x) xs
- foldlC f u (Snoc xs x) = f (foldlC f u xs) x
- foldrC :: (a -> b -> b) -> b -> ConsnoC a -> b
- foldrC f u xs = go xs u
- where
- go Nil = id
- go (Cons x xs) = f x . go xs
- go (Snoc xs x) = go xs . f x