packages feed

pandora-0.5.6: Pandora/Pattern/Transformation/Lowerable.hs

module Pandora.Pattern.Transformation.Lowerable (Lowerable (..)) where

import Pandora.Pattern.Functor.Covariant (Covariant)

{- |
> When providing a new instance, you should ensure it satisfies one law:
> * Interchange: extract . lower ≡ extract
-}

class Lowerable cat t where
	lower :: Covariant cat cat u => cat (t u a) (u a)