on master help sign in
improve style, rename update to addPattern
commit60d3afb827737f109503ca6b9bddacd9f68eca56 authorEvan Czaplicki <info@elm-lang.org> dateMon 9 Feb 2015, 23:46 (12 years ago) parent271ff2e
2 files changed+38−18
src/Transform/Canonicalize.hs+32−13 src/Transform/Canonicalize/Environment.hs+6−5
src/Transform/Canonicalize.hs+32−13
@@ -22,7 +22,7 @@ import AST.PrettyPrint (pretty, commaSep)
2222import qualified AST.Pattern as P
2323import Text.PrettyPrint as P
2424
25−import Transform.Canonicalize.Environment as Env
25+import qualified Transform.Canonicalize.Environment as Env
2626import qualified Transform.Canonicalize.Setup as Setup
2727import qualified Transform.Canonicalize.Type as Canonicalize
2828import qualified Transform.Canonicalize.Variable as Canonicalize
@@ -30,7 +30,10 @@ import qualified Transform.SortDefinitions as Transform
3030import qualified Transform.Declaration as Transform
3131
3232
33−module' :: Module.Interfaces -> Module.ValidModule -> Either [Doc] Module.CanonicalModule
33+module'
34+ :: Module.Interfaces
35+ -> Module.ValidModule
36+ -> Either [Doc] Module.CanonicalModule
3437module' interfaces modul =
3538 filterImports <$> modul'
3639 where
@@ -39,11 +42,14 @@ module' interfaces modul =
3942
4043 filterImports m =
4144 let used (name,_) = Set.member name usedModules
42− in m { Module.imports = filter used (Module.imports m) }
45+ in
46+ m { Module.imports = filter used (Module.imports m) }
4347
4448
45−moduleHelp :: Module.Interfaces -> Module.ValidModule
46− -> Canonicalizer [Doc] Module.CanonicalModule
49+moduleHelp
50+ :: Module.Interfaces
51+ -> Module.ValidModule
52+ -> Env.Canonicalizer [Doc] Module.CanonicalModule
4753moduleHelp interfaces modul@(Module.Module _ _ exports _ decls) =
4854 do env <- Setup.environment interfaces modul
4955 canonicalDecls <- mapM (declaration env) decls
@@ -74,7 +80,10 @@ moduleHelp interfaces modul@(Module.Module _ _ exports _ decls) =
7480 }
7581
7682
77−resolveExports :: [Var.Value] -> Var.Listing Var.Value -> Canonicalizer [Doc] [Var.Value]
83+resolveExports
84+ :: [Var.Value]
85+ -> Var.Listing Var.Value
86+ -> Env.Canonicalizer [Doc] [Var.Value]
7887resolveExports fullList (Var.Listing partialList open) =
7988 if open
8089 then return fullList
@@ -164,7 +173,10 @@ declToValue decl =
164173 _ -> []
165174
166175
167−declaration :: Environment -> D.ValidDecl -> Canonicalizer [Doc] D.CanonicalDecl
176+declaration
177+ :: Env.Environment
178+ -> D.ValidDecl
179+ -> Env.Canonicalizer [Doc] D.CanonicalDecl
168180declaration env decl =
169181 let canonicalize kind context pattern env v =
170182 let ctx = P.text ("Error in " ++ context) <+> pretty pattern <> P.colon
@@ -206,7 +218,10 @@ declaration env decl =
206218 return $ D.Fixity assoc prec op
207219
208220
209−expression :: Environment -> Valid.Expr -> Canonicalizer [Doc] Canonical.Expr
221+expression
222+ :: Env.Environment
223+ -> Valid.Expr
224+ -> Env.Canonicalizer [Doc] Canonical.Expr
210225expression env (A.A ann expr) =
211226 let go = expression env
212227 tipe' environ = format . Canonicalize.tipe environ
@@ -245,8 +260,9 @@ expression env (A.A ann expr) =
245260 Binop op' <$> go e1 <*> go e2
246261
247262 Lambda p e ->
248− let env' = update p env in
249− Lambda <$> format (pattern env' p) <*> expression env' e
263+ let env' = Env.addPattern p env
264+ in
265+ Lambda <$> format (pattern env' p) <*> expression env' e
250266
251267 App e1 e2 ->
252268 App <$> go e1 <*> go e2
@@ -259,7 +275,7 @@ expression env (A.A ann expr) =
259275 Let defs e ->
260276 Let <$> mapM rename' defs <*> expression env' e
261277 where
262− env' = foldr update env $ map (\(Valid.Definition p _ _) -> p) defs
278+ env' = foldr Env.addPattern env $ map (\(Valid.Definition p _ _) -> p) defs
263279 rename' (Valid.Definition p body mtipe) =
264280 Canonical.Definition
265281 <$> format (pattern env' p)
@@ -280,7 +296,7 @@ expression env (A.A ann expr) =
280296 where
281297 branch (p,b) =
282298 (,) <$> format (pattern env p)
283− <*> expression (update p env) b
299+ <*> expression (Env.addPattern p env) b
284300
285301 PortIn name st ->
286302 PortIn name <$> tipe' env st
@@ -292,7 +308,10 @@ expression env (A.A ann expr) =
292308 return (GLShader uid src tipe)
293309
294310
295−pattern :: Environment -> P.RawPattern -> Canonicalizer String P.CanonicalPattern
311+pattern
312+ :: Env.Environment
313+ -> P.RawPattern
314+ -> Env.Canonicalizer String P.CanonicalPattern
296315pattern env ptrn =
297316 case ptrn of
298317 P.Var x -> return $ P.Var x
src/Transform/Canonicalize/Environment.hs+6−5
@@ -40,14 +40,15 @@ builtIns home =
4040 dict $ map (\x -> (x, Var.Canonical Var.BuiltIn x)) xs
4141
4242 tuples =
43− map (\n -> "_Tuple" ++ show (n :: Int)) [0..9]
43+ map (\n -> "_Tuple" ++ show n) [0 .. 9 :: Int]
4444
4545
46−update :: P.Pattern var -> Environment -> Environment
47−update ptrn env =
46+addPattern :: P.Pattern var -> Environment -> Environment
47+addPattern ptrn env =
4848 env { _values = foldr put (_values env) (P.boundVarList ptrn) }
4949 where
50− put x = Map.insert x [Var.local x]
50+ put x =
51+ Map.insert x [Var.local x]
5152
5253
5354merge :: Environment -> Environment -> Environment
@@ -70,7 +71,7 @@ type Dict a =
7071
7172dict :: [(String,a)] -> Dict a
7273dict pairs =
73− Map.fromList $ map (second (:[])) pairs
74+ Map.fromList (map (second (:[])) pairs)
7475
7576
7677insert :: String -> a -> Dict a -> Dict a