{-# LANGUAGE TemplateHaskell #-}

-- | Conditional expressions

module Language.Syntactic.Constructs.Condition where



import Language.Syntactic



data Condition sig
  where
    Condition :: Condition (Bool :-> a :-> a :-> Full a)

instance Constrained Condition
  where
    type Sat Condition = Top
    exprDict _ = Dict

instance Semantic Condition
  where
    semantics Condition = Sem "condition" (\c t e -> if c then t else e)

semanticInstances ''Condition