diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2026-02-08 15:43:02 +0100 |
|---|---|---|
| committer | Tom Smeding <tom@tomsmeding.com> | 2026-02-12 20:44:47 +0100 |
| commit | 62796be35e6e768147aab70ba0beeb94c058c714 (patch) | |
| tree | dd43c8c2f37c59308b6b7d503fd25420621b0ab9 /src/CHAD/AST.hs | |
| parent | c2831ef0f8be71f2a72ee4eee446e2ac473fb638 (diff) | |
WIP (continue in UnMonoid)
Diffstat (limited to 'src/CHAD/AST.hs')
| -rw-r--r-- | src/CHAD/AST.hs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/CHAD/AST.hs b/src/CHAD/AST.hs index 3f6dfc4..bb14218 100644 --- a/src/CHAD/AST.hs +++ b/src/CHAD/AST.hs @@ -129,6 +129,9 @@ data Expr x env t where EPlus :: x t -> SMTy t -> Expr x env t -> Expr x env t -> Expr x env t EOneHot :: x t -> SMTy t -> SAcPrj p t a -> Expr x env (AcIdxS p t) -> Expr x env a -> Expr x env t + EIdxPair :: x (TIdxPair n t) -> SNat n -> Expr x env (Tup (Replicate n TIx)) -> Expr x env t -> Expr x env (TIdxPair n t) + EUnIdxPair :: x (TPair (Tup (Replicate n TIx)) t) -> Expr x env (TIdxPair n t) -> Expr x env (TPair (Tup (Replicate n TIx)) t) + -- interface of abstract monoidal types ELNil :: x (TLEither a b) -> STy a -> STy b -> Expr x env (TLEither a b) ELInl :: x (TLEither a b) -> STy b -> Expr x env a -> Expr x env (TLEither a b) @@ -601,6 +604,9 @@ makeZeroInfo = \ty reference -> ELet ext reference $ go ty (EVar ext (fromSMTy t go SMTMaybe{} _ = ENil ext go (SMTArr _ t) e = emap (go t (EVar ext (fromSMTy t) IZ)) e go SMTScal{} _ = ENil ext + go (SMTIdxPair _ t) e = + eunPair (EUnIdxPair ext e) $ \_ e1 e2 -> + EPair ext e1 (go t e2) splitSparsePair :: -- given a sparsity |
