What is Nostr?
Bolognium /
npub1jy4…p556
2024-04-08 16:23:57

Bolognium on Nostr: Consider the following: data ZigZag f g a = Done a | Zig (f (ZigZag f g a)) | Zag (g ...

Consider the following:

data ZigZag f g a
= Done a
| Zig (f (ZigZag f g a))
| Zag (g (ZigZag f g a))

instance (Functor f, Functor g) => Functor (ZigZag f g) where
fmap f (Done a) = Done (f a)
fmap f (Zig fz) = Zig (fmap (fmap f) fz)
fmap f (Zag gz) = Zag (fmap (fmap f) gz)

zagzig :: (Functor f, Functor g) => ZigZag f g a -> ZigZag g f a
zagzig (Done a) = Done a
zagzig (Zig fz) = Zag (fmap zagzig fz)
zagzig (Zag gz) = Zig (fmap zagzig gz)


#haskell
Author Public Key
npub1jy4jrkyr66uzu6hqze36u2x8rq4g45hv6977dgc4kgkqpguq07fqwxp556