diff options
| author | Tom Smeding <tom@tomsmeding.com> | 2025-10-30 20:09:10 +0100 |
|---|---|---|
| committer | Tom Smeding <tom@tomsmeding.com> | 2025-10-30 20:09:10 +0100 |
| commit | 654b13d0de961788ed600e8eeb6c9fbbd736439e (patch) | |
| tree | 4821c1082aa2fcd04ea6ecb0e07f8d3bdbe643ed /src/Language | |
| parent | 4c9ae47dd5bbd27b1acb6dc5d4a55657ac1f026f (diff) | |
Diffstat (limited to 'src/Language')
| -rw-r--r-- | src/Language/AST.hs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Language/AST.hs b/src/Language/AST.hs index 325817d..c9d05c9 100644 --- a/src/Language/AST.hs +++ b/src/Language/AST.hs @@ -58,6 +58,15 @@ data NExpr env t where NEMinimum1Inner :: ScalIsNumeric t ~ True => NExpr env (TArr (S n) (TScal t)) -> NExpr env (TArr n (TScal t)) NEReshape :: SNat n -> NExpr env (Tup (Replicate n TIx)) -> NExpr env (TArr m t) -> NExpr env (TArr n t) + NEFold1InnerD1 :: Var n1 t1 -> Var n2 t1 -> NExpr ('(n2, t1) : '(n1, t1) : env) (TPair t1 b) + -> NExpr env t1 + -> NExpr env (TArr (S n) t1) + -> NExpr env (TPair (TArr n t1) (TArr (S n) b)) + NEFold1InnerD2 :: Var n1 b -> Var n2 t2 -> NExpr ('(n2, t2) : '(n1, b) : env) (TPair t2 t2) + -> NExpr env (TArr (S n) b) + -> NExpr env (TArr n t2) + -> NExpr env (TPair (TArr n t2) (TArr (S n) t2)) + -- expression operations NEConst :: Show (ScalRep t) => SScalTy t -> ScalRep t -> NExpr env (TScal t) NEIdx0 :: NExpr env (TArr Z t) -> NExpr env t @@ -208,6 +217,9 @@ fromNamedExpr val = \case NEMinimum1Inner e -> EMinimum1Inner ext (go e) NEReshape n a b -> EReshape ext n (go a) (go b) + NEFold1InnerD1 n1 n2 a b c -> EFold1InnerD1 ext Noncommut (lambda2 val n1 n2 a) (go b) (go c) + NEFold1InnerD2 n1 n2 a b c -> EFold1InnerD2 ext Noncommut (lambda2 val n1 n2 a) (go b) (go c) + NEConst t x -> EConst ext t x NEIdx0 e -> EIdx0 ext (go e) NEIdx1 a b -> EIdx1 ext (go a) (go b) |
