module ADP.Fusion.Term.Deletion.Type where import Data.Strict.Tuple import Data.PrimitiveArray import ADP.Fusion.Core.Classes import ADP.Fusion.Core.Multi data Deletion = Deletion instance Build Deletion instance (Element ls i) => Element (ls :!: Deletion) i where data Elm (ls :!: Deletion) i = ElmDeletion !(RunningIndex i) !(Elm ls i) type Arg (ls :!: Deletion) = Arg ls :. () getArg (ElmDeletion _ l) = getArg l :. () getIdx (ElmDeletion i _) = i {-# Inline getArg #-} {-# Inline getIdx #-} type instance TermArg Deletion = ()