aboutsummaryrefslogtreecommitdiff
path: root/src/CHAD/AST/Accum.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/CHAD/AST/Accum.hs')
-rw-r--r--src/CHAD/AST/Accum.hs4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/CHAD/AST/Accum.hs b/src/CHAD/AST/Accum.hs
index ea74a95..b09e1bb 100644
--- a/src/CHAD/AST/Accum.hs
+++ b/src/CHAD/AST/Accum.hs
@@ -83,6 +83,7 @@ type family ZeroInfo t where
ZeroInfo (TMaybe a) = TNil
ZeroInfo (TArr n t) = TArr n (ZeroInfo t)
ZeroInfo (TScal t) = TNil
+ ZeroInfo (TIdxPair n t) = TPair (Tup (Replicate n TIx)) (ZeroInfo t)
tZeroInfo :: SMTy t -> STy (ZeroInfo t)
tZeroInfo SMTNil = STNil
@@ -91,6 +92,7 @@ tZeroInfo (SMTLEither _ _) = STNil
tZeroInfo (SMTMaybe _) = STNil
tZeroInfo (SMTArr n t) = STArr n (tZeroInfo t)
tZeroInfo (SMTScal _) = STNil
+tZeroInfo (SMTIdxPair n t) = STPair (tTup (sreplicate n tIx)) (tZeroInfo t)
-- | Info needed to create a zero-valued deep accumulator for a monoid type.
-- Should be constructable from a D1.
@@ -101,6 +103,7 @@ type family DeepZeroInfo t where
DeepZeroInfo (TMaybe a) = TMaybe (DeepZeroInfo a)
DeepZeroInfo (TArr n a) = TArr n (DeepZeroInfo a)
DeepZeroInfo (TScal t) = TNil
+ DeepZeroInfo (TIdxPair n t) = TPair (Tup (Replicate n TIx)) (DeepZeroInfo t)
tDeepZeroInfo :: SMTy t -> STy (DeepZeroInfo t)
tDeepZeroInfo SMTNil = STNil
@@ -109,6 +112,7 @@ tDeepZeroInfo (SMTLEither a b) = STLEither (tDeepZeroInfo a) (tDeepZeroInfo b)
tDeepZeroInfo (SMTMaybe a) = STMaybe (tDeepZeroInfo a)
tDeepZeroInfo (SMTArr n t) = STArr n (tDeepZeroInfo t)
tDeepZeroInfo (SMTScal _) = STNil
+tDeepZeroInfo (SMTIdxPair n t) = STPair (tTup (sreplicate n tIx)) (tDeepZeroInfo t)
-- -- | Additional info needed for accumulation. This is empty unless there is
-- -- sparsity in the monoid.