From 62796be35e6e768147aab70ba0beeb94c058c714 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Sun, 8 Feb 2026 15:43:02 +0100 Subject: WIP (continue in UnMonoid) --- src/CHAD/AST/Accum.hs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/CHAD/AST/Accum.hs') 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. -- cgit v1.2.3-70-g09d2