module Pandora.Pattern.Functor.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
        {-# MINIMAL extract #-}
        extract :: a <-| t

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