Haskell Implementation
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE MultiParamTypeClasses #-}
-- Comonad (as in Control.Comonad which is not yet? in the standard library)
class Functor w => Comonad w where
extract :: w a -> a
duplicate :: w a -> w (w a)