{-| Module : CM.Validity Description : Tools for working with validity Copyright : (c) Marek Suchánek, 2017 License : MIT Constructions for working with conceptual model elements validity and constraints. -} module CM.Validity where -- |Type showing validity of some contruct (similar to 'Maybe') data Validity = Valid | Invalid String deriving (Show, Read, Eq) -- |Check if 'Validity' signals valid or invalid isValid :: Validity -> Bool isValid Valid = True isValid _ = False -- |Convert 'Validity' to 'Maybe' with message violationMessage :: Validity -> Maybe String violationMessage (Invalid msg) = Just msg violationMessage _ = Nothing -- |Construct constraint with boolean value and message newConstraint :: Bool -> String -> Validity newConstraint b msg = if b then Valid else Invalid msg