summaryrefslogtreecommitdiff
path: root/src/AST/Pretty.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/AST/Pretty.hs')
-rw-r--r--src/AST/Pretty.hs40
1 files changed, 23 insertions, 17 deletions
diff --git a/src/AST/Pretty.hs b/src/AST/Pretty.hs
index 4190f32..35c78c1 100644
--- a/src/AST/Pretty.hs
+++ b/src/AST/Pretty.hs
@@ -7,7 +7,7 @@
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE TypeOperators #-}
-module AST.Pretty (ppExpr, ppTy, PrettyX(..)) where
+module AST.Pretty (ppExpr, ppSTy, ppTy, PrettyX(..)) where
import Control.Monad (ap)
import Data.List (intersperse)
@@ -252,7 +252,7 @@ ppExpr' d val expr = case expr of
ppApp (annotate AMonoid (ppString "accum") <> ppX expr) [ppString (show (fromSNat i)), e1', e2', e3']
EZero _ t -> return $ parens $
- annotate AMonoid (ppString "zero") <> ppX expr <+> ppString "::" <+> ppTy' 0 t <> ppString ")"
+ annotate AMonoid (ppString "zero") <> ppX expr <+> ppString "::" <+> ppSTy' 0 t <> ppString ")"
EPlus _ _ a b -> do
a' <- ppExpr' 11 val a
@@ -321,23 +321,29 @@ operator OExp{} = (Prefix, "exp")
operator OLog{} = (Prefix, "log")
operator OIDiv{} = (Infix, "`div`")
-ppTy :: Int -> STy t -> String
+ppSTy :: Int -> STy t -> String
+ppSTy d ty = ppTy d (unSTy ty)
+
+ppSTy' :: Int -> STy t -> Doc q
+ppSTy' d ty = ppTy' d (unSTy ty)
+
+ppTy :: Int -> Ty -> String
ppTy d ty = render $ ppTy' d ty
-ppTy' :: Int -> STy t -> Doc q
-ppTy' _ STNil = ppString "1"
-ppTy' d (STPair a b) = ppParen (d > 7) $ ppTy' 8 a <> ppString " * " <> ppTy' 8 b
-ppTy' d (STEither a b) = ppParen (d > 6) $ ppTy' 7 a <> ppString " + " <> ppTy' 7 b
-ppTy' d (STMaybe t) = ppParen (d > 10) $ ppString "Maybe " <> ppTy' 11 t
-ppTy' d (STArr n t) = ppParen (d > 10) $
- ppString "Arr " <> ppString (show (fromSNat n)) <> ppString " " <> ppTy' 11 t
-ppTy' _ (STScal sty) = ppString $ case sty of
- STI32 -> "i32"
- STI64 -> "i64"
- STF32 -> "f32"
- STF64 -> "f64"
- STBool -> "bool"
-ppTy' d (STAccum t) = ppParen (d > 10) $ ppString "Accum " <> ppTy' 11 t
+ppTy' :: Int -> Ty -> Doc q
+ppTy' _ TNil = ppString "1"
+ppTy' d (TPair a b) = ppParen (d > 7) $ ppTy' 8 a <> ppString " * " <> ppTy' 8 b
+ppTy' d (TEither a b) = ppParen (d > 6) $ ppTy' 7 a <> ppString " + " <> ppTy' 7 b
+ppTy' d (TMaybe t) = ppParen (d > 10) $ ppString "Maybe " <> ppTy' 11 t
+ppTy' d (TArr n t) = ppParen (d > 10) $
+ ppString "Arr " <> ppString (show (fromNat n)) <> ppString " " <> ppTy' 11 t
+ppTy' _ (TScal sty) = ppString $ case sty of
+ TI32 -> "i32"
+ TI64 -> "i64"
+ TF32 -> "f32"
+ TF64 -> "f64"
+ TBool -> "bool"
+ppTy' d (TAccum t) = ppParen (d > 10) $ ppString "Accum " <> ppTy' 11 t
ppString :: String -> Doc x
ppString = fromString