-- | This module contains a data type for effect constraints. module FreeC.LiftedIR.Effect where -- | An effect constraint. -- -- These effects corresponds to type classes constraining the container used -- by the @Free@ monad. The order of the constructors in this data type -- determines the order of constraints in the generated function declarations. -- -- The 'Sharing' effect is the first effect by convention. All other effects -- are in alphabetical order by default. data Effect = Sharing | Normalform | Partiality | Tracing | NonDet deriving ( Eq, Ord, Read, Show )