Document and fix code style
This commit is contained in:
parent
b8aedd541d
commit
3efb27ac0c
3 changed files with 53 additions and 53 deletions
|
|
@ -55,7 +55,7 @@ renameExp old_names = \case
|
||||||
pure (Map.union env1 env2, EAdd e1' e2')
|
pure (Map.union env1 env2, EAdd e1' e2')
|
||||||
|
|
||||||
ELet b e -> do
|
ELet b e -> do
|
||||||
(new_names, b) <- renameLocalBind old_names b
|
(new_names, b) <- renameLocalBind old_names b
|
||||||
(new_names', e') <- renameExp new_names e
|
(new_names', e') <- renameExp new_names e
|
||||||
pure (new_names', ELet b e')
|
pure (new_names', ELet b e')
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,8 +41,8 @@ checkBind cxt b =
|
||||||
(rhs', t_rhs) <- infer cxt rhs
|
(rhs', t_rhs) <- infer cxt rhs
|
||||||
unless (typeEq t_rhs t) . throwError $ typeErr name t t_rhs
|
unless (typeEq t_rhs t) . throwError $ typeErr name t t_rhs
|
||||||
pure $ T.Bind (name, t) (zip parms ts_parms) rhs'
|
pure $ T.Bind (name, t) (zip parms ts_parms) rhs'
|
||||||
where
|
where
|
||||||
ts_parms = fst $ partitionType (length parms) t
|
ts_parms = fst $ partitionType (length parms) t
|
||||||
|
|
||||||
-- | @ f x y = rhs ⇒ f = \x.\y. rhs @
|
-- | @ f x y = rhs ⇒ f = \x.\y. rhs @
|
||||||
expandLambdas :: Bind -> Bind
|
expandLambdas :: Bind -> Bind
|
||||||
|
|
|
||||||
|
|
@ -20,25 +20,25 @@ data Exp
|
||||||
| EApp Type Exp Exp
|
| EApp Type Exp Exp
|
||||||
| EAdd Type Exp Exp
|
| EAdd Type Exp Exp
|
||||||
| EAbs Type Id Exp
|
| EAbs Type Id Exp
|
||||||
deriving (C.Eq, C.Ord, C.Show, C.Read)
|
deriving (C.Eq, C.Ord, C.Show, C.Read)
|
||||||
|
|
||||||
type Id = (Ident, Type)
|
type Id = (Ident, Type)
|
||||||
|
|
||||||
data Bind = Bind Id [Id] Exp
|
data Bind = Bind Id [Id] Exp
|
||||||
deriving (C.Eq, C.Ord, C.Show, C.Read)
|
deriving (C.Eq, C.Ord, C.Show, C.Read)
|
||||||
|
|
||||||
instance Print Program where
|
instance Print Program where
|
||||||
prt i (Program sc) = prPrec i 0 $ prt 0 sc
|
prt i (Program sc) = prPrec i 0 $ prt 0 sc
|
||||||
|
|
||||||
instance Print Bind where
|
instance Print Bind where
|
||||||
prt i (Bind name@(n, _) parms rhs) = prPrec i 0 $ concatD
|
prt i (Bind name@(n, _) parms rhs) = prPrec i 0 $ concatD
|
||||||
[ prtId 0 name
|
[ prtId 0 name
|
||||||
, doc $ showString ";"
|
, doc $ showString ";"
|
||||||
, prt 0 n
|
, prt 0 n
|
||||||
, prtIdPs 0 parms
|
, prtIdPs 0 parms
|
||||||
, doc $ showString "="
|
, doc $ showString "="
|
||||||
, prt 0 rhs
|
, prt 0 rhs
|
||||||
]
|
]
|
||||||
|
|
||||||
instance Print [Bind] where
|
instance Print [Bind] where
|
||||||
prt _ [] = concatD []
|
prt _ [] = concatD []
|
||||||
|
|
@ -50,51 +50,51 @@ prtIdPs i = prPrec i 0 . concatD . map (prtIdP i)
|
||||||
|
|
||||||
prtId :: Int -> Id -> Doc
|
prtId :: Int -> Id -> Doc
|
||||||
prtId i (name, t) = prPrec i 0 $ concatD
|
prtId i (name, t) = prPrec i 0 $ concatD
|
||||||
[ prt 0 name
|
[ prt 0 name
|
||||||
, doc $ showString ":"
|
, doc $ showString ":"
|
||||||
, prt 0 t
|
, prt 0 t
|
||||||
]
|
]
|
||||||
|
|
||||||
prtIdP :: Int -> Id -> Doc
|
prtIdP :: Int -> Id -> Doc
|
||||||
prtIdP i (name, t) = prPrec i 0 $ concatD
|
prtIdP i (name, t) = prPrec i 0 $ concatD
|
||||||
[ doc $ showString "("
|
[ doc $ showString "("
|
||||||
, prt 0 name
|
, prt 0 name
|
||||||
, doc $ showString ":"
|
, doc $ showString ":"
|
||||||
, prt 0 t
|
, prt 0 t
|
||||||
, doc $ showString ")"
|
, doc $ showString ")"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
instance Print Exp where
|
instance Print Exp where
|
||||||
prt i = \case
|
prt i = \case
|
||||||
EId n -> prPrec i 3 $ concatD [prtIdP 0 n]
|
EId n -> prPrec i 3 $ concatD [prtIdP 0 n]
|
||||||
EInt i1 -> prPrec i 3 $ concatD [prt 0 i1]
|
EInt i1 -> prPrec i 3 $ concatD [prt 0 i1]
|
||||||
ELet bs e -> prPrec i 3 $ concatD
|
ELet bs e -> prPrec i 3 $ concatD
|
||||||
[ doc $ showString "let"
|
[ doc $ showString "let"
|
||||||
, prt 0 bs
|
, prt 0 bs
|
||||||
, doc $ showString "in"
|
, doc $ showString "in"
|
||||||
, prt 0 e
|
, prt 0 e
|
||||||
]
|
]
|
||||||
EApp t e1 e2 -> prPrec i 2 $ concatD
|
EApp t e1 e2 -> prPrec i 2 $ concatD
|
||||||
[ doc $ showString "@"
|
[ doc $ showString "@"
|
||||||
, prt 0 t
|
, prt 0 t
|
||||||
, prt 2 e1
|
, prt 2 e1
|
||||||
, prt 3 e2
|
, prt 3 e2
|
||||||
]
|
]
|
||||||
EAdd t e1 e2 -> prPrec i 1 $ concatD
|
EAdd t e1 e2 -> prPrec i 1 $ concatD
|
||||||
[ doc $ showString "@"
|
[ doc $ showString "@"
|
||||||
, prt 0 t
|
, prt 0 t
|
||||||
, prt 1 e1
|
, prt 1 e1
|
||||||
, doc $ showString "+"
|
, doc $ showString "+"
|
||||||
, prt 2 e2
|
, prt 2 e2
|
||||||
]
|
]
|
||||||
EAbs t n e -> prPrec i 0 $ concatD
|
EAbs t n e -> prPrec i 0 $ concatD
|
||||||
[ doc $ showString "@"
|
[ doc $ showString "@"
|
||||||
, prt 0 t
|
, prt 0 t
|
||||||
, doc $ showString "\\"
|
, doc $ showString "\\"
|
||||||
, prtIdP 0 n
|
, prtIdP 0 n
|
||||||
, doc $ showString "."
|
, doc $ showString "."
|
||||||
, prt 0 e
|
, prt 0 e
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue