Conversation

extract :: w a -> a is the dual of pure :: a -> m a (w is the dual of m, ofc) and duplicate :: w a -> w (w a) is the dual of join :: m a -> m (m a) the dual of (>>=) is called extend
1
4
ohh, so: extend :: (w a -> b) -> w a -> w b is the dual of bind :: m a -> (a -> m b) -> m b now wondering what programming with codo would look like… is that a thing?
2
2