{-# LANGUAGE TypeFamilies, MultiParamTypeClasses #-}

module Language.XDsp.Semantics.CtrlExtensions (
  RCmpr (..)
 ,RCtrl (..)
)

where

import Language.XDsp.Semantics.Core

-- control extensions, e.g. if-then-else

class RCmpr el where
  data RBool el :: *
  req :: el -> el -> RBool el
  rne :: el -> el -> RBool el
  rlt :: el -> el -> RBool el
  rle :: el -> el -> RBool el
  rgt :: el -> el -> RBool el
  rge :: el -> el -> RBool el

class (Dsp repr, Var a) => RCtrl repr el a where
  rIf     :: RBool el -> repr a -> repr a
  rIfElse :: RBool el -> repr a -> repr a -> repr a