ADPfusion-0.4.0.0: ADP/Fusion/Term/Epsilon/Type.hs
module ADP.Fusion.Term.Epsilon.Type where
import Data.Strict.Tuple
import Data.PrimitiveArray
import ADP.Fusion.Base
data Epsilon = Epsilon
instance Build Epsilon
instance (Element ls i) => Element (ls :!: Epsilon) i where
data Elm (ls :!: Epsilon) i = ElmEpsilon !i !i !(Elm ls i)
type Arg (ls :!: Epsilon) = Arg ls :. ()
getArg (ElmEpsilon _ _ l) = getArg l :. ()
getIdx (ElmEpsilon i _ _) = i
getOmx (ElmEpsilon _ o _) = o
{-# Inline getArg #-}
{-# Inline getIdx #-}
{-# Inline getOmx #-}
type instance TermArg (TermSymbol a Epsilon) = TermArg a :. ()