From ade38c607a8d0dc8dc1d701084ed88df2fa89df9 Mon Sep 17 00:00:00 2001 From: Tom Smeding Date: Tue, 26 Nov 2024 23:05:30 +0100 Subject: Working argument accum mode (...) The derivative of 'neural' in full accum mode is pretty atrocious now; I think this is because when you have code like this: \(a :: Arr 1 R) -> let b = a in let c = b in sum d then because the argument, as well as both let bindings, bind a value of array type, each will introduce an accumulator, hence resulting in three (!) nested `with` clauses that each just contribute their result back to their parent. This is pointless, and we should fix this. --- src/AST/Pretty.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/AST/Pretty.hs') diff --git a/src/AST/Pretty.hs b/src/AST/Pretty.hs index ec8574f..663e9b0 100644 --- a/src/AST/Pretty.hs +++ b/src/AST/Pretty.hs @@ -218,7 +218,7 @@ ppExpr' d val = \case return $ showParen (d > 10) $ showString ("accum " ++ show (fromSNat i) ++ " ") . e1' . showString " " . e2' . showString " " . e3' - EZero _ -> return $ showString "zero" + EZero t -> return $ showString ("(zero :: " ++ ppTy 0 t ++ ")") EPlus _ a b -> do a' <- ppExpr' 11 val a -- cgit v1.2.3-70-g09d2