module ADP.Fusion.Core.Term.Switch where
import Data.Strict.Tuple
import qualified Data.Vector.Generic as VG
import Data.PrimitiveArray
import ADP.Fusion.Core.Classes
import ADP.Fusion.Core.Multi
data SwitchStatus = Disabled | Enabled
deriving (Eq,Ord,Show)
data Switch where
Switch ∷ !SwitchStatus → Switch
instance Build Switch
instance
( Element ls i
) => Element (ls :!: Switch) i where
data Elm (ls :!: Switch) i = ElmSwitch !(RunningIndex i) !(Elm ls i)
type Arg (ls :!: Switch) = Arg ls :. ()
getArg (ElmSwitch _ ls) = getArg ls :. ()
getIdx (ElmSwitch i _ ) = i
{-# Inline getArg #-}
{-# Inline getIdx #-}
deriving instance (Show i, Show (RunningIndex i), Show (Elm ls i)) => Show (Elm (ls :!: Switch) i)
type instance TermArg Switch = ()