module Pandora.Pattern.Functor.Extractable (Extractable (..)) where

import Pandora.Core.Functor (type (<-|))
import Pandora.Pattern.Functor.Covariant (Covariant)
import Pandora.Pattern.Object.Monoid (Monoid (zero))

class Covariant t => Extractable t where
        extract :: a <-| t

instance Monoid e => Extractable ((->) e) where
        extract f = f zero