module Sqel.Merge where import Sqel.Data.Dd (Dd (Dd), DdInc (DdMerge), DdStruct (DdComp, DdPrim)) import Sqel.Type (Merge) merge :: Dd s -> Dd (Merge s) merge :: forall (s :: DdK). Dd s -> Dd (Merge s) merge = \case Dd SelW sel sel Mods mods mods (DdComp TSelW sel tsel DdSort c c DdInc i _ NP Dd sub sub) -> forall (sel :: Sel) (mods :: [*]) (s1 :: Struct) a. SelW sel -> Mods mods -> DdStruct s1 -> Dd ('DdK sel mods a s1) Dd SelW sel sel Mods mods mods (forall (sel :: TSel) (c :: Comp) (i :: CompInc) (sub :: [DdK]). TSelW sel -> DdSort c -> DdInc i -> NP Dd sub -> DdStruct ('Comp sel c i sub) DdComp TSelW sel tsel DdSort c c DdInc 'Merge DdMerge NP Dd sub sub) Dd SelW sel sel Mods mods mods DdStruct s1 DdPrim -> forall (sel :: Sel) (mods :: [*]) (s1 :: Struct) a. SelW sel -> Mods mods -> DdStruct s1 -> Dd ('DdK sel mods a s1) Dd SelW sel sel Mods mods mods DdStruct 'Prim DdPrim