grisette-0.3.1.1: src/Grisette/Core/BuiltinUnionWrappers.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE Trustworthy #-}
-- |
-- Module : Grisette.Core.BuiltinUnionWrapper
-- Copyright : (c) Sirui Lu 2021-2023
-- License : BSD-3-Clause (see the LICENSE file)
--
-- Maintainer : siruilu@cs.washington.edu
-- Stability : Experimental
-- Portability : GHC only
module Grisette.Core.BuiltinUnionWrappers
( -- * Builtin constructor wrappers for some common data types
mrgTrue,
mrgFalse,
mrgUnit,
mrgTuple2,
mrgTuple3,
mrgJust,
mrgNothing,
mrgLeft,
mrgRight,
mrgInL,
mrgInR,
mrgAssertionViolation,
mrgAssumptionViolation,
)
where
import Data.Functor.Sum (Sum)
import Grisette.Core.Control.Exception (VerificationConditions)
import Grisette.Core.Data.Class.SimpleMergeable (mrgSingle)
import Grisette.Core.TH (makeUnionWrapper, makeUnionWrapper')
$(makeUnionWrapper "mrg" ''Bool)
$(makeUnionWrapper' ["mrgUnit"] ''())
$(makeUnionWrapper' ["mrgTuple2"] ''(,))
$(makeUnionWrapper' ["mrgTuple3"] ''(,,))
$(makeUnionWrapper "mrg" ''Maybe)
$(makeUnionWrapper "mrg" ''Either)
$(makeUnionWrapper "mrg" ''Sum)
$(makeUnionWrapper "mrg" ''VerificationConditions)