diff options
author | Tom Smeding <tom@tomsmeding.com> | 2025-05-25 23:34:51 +0200 |
---|---|---|
committer | Tom Smeding <tom@tomsmeding.com> | 2025-05-25 23:34:51 +0200 |
commit | b0b562e5000dbcac8b944801e7ab96556855a4ff (patch) | |
tree | 8b959a36dce2b3a2e2a88b14aba879535cc3ff16 | |
parent | faa9af2ec2e463c1774f54b9e8f0ae3733cdb048 (diff) |
Print EMaybe as case
-rw-r--r-- | src/AST/Pretty.hs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/AST/Pretty.hs b/src/AST/Pretty.hs index 2bb78d4..6d70ca3 100644 --- a/src/AST/Pretty.hs +++ b/src/AST/Pretty.hs @@ -145,12 +145,20 @@ ppExpr' d val expr = case expr of EMaybe _ a b e -> do let STMaybe t = typeOf e - a' <- ppExpr' 11 val a + e' <- ppExpr' 0 val e + a' <- ppExpr' 0 val a name <- genNameIfUsedIn t IZ b b' <- ppExpr' 0 (Const name `SCons` val) b - e' <- ppExpr' 11 val e - return $ ppParen (d > 10) $ - ppApp (ppString "maybe" <> ppX expr) [a', ppLam [ppString name] b', e'] + return $ ppParen (d > 0) $ + align $ + group (flatAlt + (annotate AKey (ppString "case") <> ppX expr <+> e' + <> hardline <> annotate AKey (ppString "of")) + (annotate AKey (ppString "case") <> ppX expr <+> e' <+> annotate AKey (ppString "of"))) + <> hardline + <> indent 2 + (ppString "Nothing" <+> ppString "->" <+> a' + <> hardline <> ppString "Just" <+> ppString name <+> ppString "->" <+> b') ELNil _ _ _ -> return (ppString "LNil") |