module Data.Rope.Branded.Comonad ( Comonad(..) ) where class Functor w => Comonad w where extract :: w a -> a duplicate :: w a -> w (w a) extend :: (w a -> b) -> w a -> w b duplicate = extend id extend f = fmap f . duplicate