on master help sign in
style: nicer indentation
commite8966353480617eed3f0c209f5240fb93e105630 authorEvan Czaplicki <info@elm-lang.org> dateMon 9 Feb 2015, 14:01 (12 years ago) parente714001
1 file changed+29−10
src/Transform/Canonicalize/Variable.hs+29−10
src/Transform/Canonicalize/Variable.hs+29−10
@@ -12,6 +12,7 @@ import qualified AST.Type as Type
1212import qualified AST.Variable as Var
1313import Transform.Canonicalize.Environment as Env
1414
15+
1516variable :: Environment -> String -> Canonicalizer String Var.Canonical
1617variable env var =
1718 case modul of
@@ -30,8 +31,11 @@ variable env var =
3031 [x] -> (Nothing, x)
3132 xs -> (Just (init xs), last xs)
3233
33−tvar :: Environment -> String
34− -> Canonicalizer String (Either Var.Canonical (Var.Canonical, [String], Type.CanonicalType))
34+
35+tvar
36+ :: Environment
37+ -> String
38+ -> Canonicalizer String (Either Var.Canonical (Var.Canonical, [String], Type.CanonicalType))
3539tvar env var =
3640 case adts ++ aliases of
3741 [] -> notFound "type" (Map.keys (_adts env) ++ Map.keys (_aliases env)) var
@@ -46,6 +50,7 @@ tvar env var =
4650 Left v -> v
4751 Right (v,_,_) -> v
4852
53+
4954pvar :: Environment -> String -> Canonicalizer String Var.Canonical
5055pvar env var =
5156 case Map.lookup var (_patterns env) of
@@ -53,10 +58,12 @@ pvar env var =
5358 Just vs -> preferLocals env "pattern" vs var
5459 Nothing -> notFound "pattern" (Map.keys (_patterns env)) var
5560
61+
5662found :: (a -> Var.Canonical) -> a -> Canonicalizer String a
57−found extract v = do
58− _ <- Env.using (extract v)
59− return v
63+found extract v =
64+ do _ <- Env.using (extract v)
65+ return v
66+
6067
6168notFound :: String -> [String] -> String -> Canonicalizer String a
6269notFound kind possibilities var =
@@ -66,12 +73,24 @@ notFound kind possibilities var =
6673 msg = if null matches then "" else
6774 "\nClose matches include: " ++ List.intercalate ", " matches
6875
69−preferLocals :: Environment -> String -> [Var.Canonical] -> String
70− -> Canonicalizer String Var.Canonical
71−preferLocals env = preferLocals' env id
7276
73−preferLocals' :: Environment -> (a -> Var.Canonical) -> String -> [a] -> String
74− -> Canonicalizer String a
77+preferLocals
78+ :: Environment
79+ -> String
80+ -> [Var.Canonical]
81+ -> String
82+ -> Canonicalizer String Var.Canonical
83+preferLocals env =
84+ preferLocals' env id
85+
86+
87+preferLocals'
88+ :: Environment
89+ -> (a -> Var.Canonical)
90+ -> String
91+ -> [a]
92+ -> String
93+ -> Canonicalizer String a
7594preferLocals' env extract kind possibilities var =
7695 case filter (isLocal . extract) possibilities of
7796 [] -> ambiguous possibilities