{-# LANGUAGE TemplateHaskell #-}
module Language.Syntactic.Constructs.Condition where
import Language.Syntactic
data Condition sig
where
Condition :: Condition (Bool :-> a :-> a :-> Full a)
instance Constrained Condition
where
{-# SPECIALIZE instance Constrained Condition #-}
{-# INLINABLE exprDict #-}
type Sat Condition = Top
exprDict = const Dict
instance Semantic Condition
where
{-# SPECIALIZE instance Semantic Condition #-}
{-# INLINABLE semantics #-}
semantics Condition = Sem "condition" (\c t e -> if c then t else e)
semanticInstances ''Condition