on master help sign in
Rename ADT to union
commit013745290131d5f4045769fc0d1f5a5720155a5f authorEvan Czaplicki <info@elm-lang.org> dateMon 1 Feb 2016, 11:17 (11 years ago) parent6d9f01b
8 files changed+60−61
src/AST/Module.hs+15−15 src/Canonicalize.hs+1−2 src/Canonicalize/Environment.hs+7−7 src/Canonicalize/Setup.hs+7−7 src/Canonicalize/Variable.hs+4−4 src/Nitpick/PatternMatches.hs+6−6 src/Type/Environment.hs+8−8 src/Type/Inference.hs+12−12
src/AST/Module.hs+15−15
@@ -1,7 +1,7 @@
11module AST.Module
22 ( Interfaces
3− , Types, Aliases, ADTs
4− , AdtInfo, CanonicalAdt
3+ , Types, Aliases, Unions
4+ , UnionInfo, CanonicalUnion
55 , SourceModule, ValidModule, CanonicalModule, Optimized
66 , Module(..), Body(..)
77 , Header(..)
@@ -40,16 +40,16 @@ type Aliases =
4040 Map.Map String ([String], Type.Canonical)
4141
4242
43−type ADTs =
44− Map.Map String (AdtInfo String)
43+type Unions =
44+ Map.Map String (UnionInfo String)
4545
4646
47−type AdtInfo v =
47+type UnionInfo v =
4848 ( [String], [(v, [Type.Canonical])] )
4949
5050
51−type CanonicalAdt =
52− ( Var.Canonical, AdtInfo Var.Canonical )
51+type CanonicalUnion =
52+ ( Var.Canonical, UnionInfo Var.Canonical )
5353
5454
5555
@@ -93,11 +93,11 @@ data Module docs imports exports body =
9393
9494data Body expr =
9595 Body
96− { program :: expr
97− , types :: Types
98− , fixities :: [(Decl.Assoc, Int, String)]
99− , aliases :: Aliases
100− , datatypes :: ADTs
96+ { program :: expr
97+ , types :: Types
98+ , fixities :: [(Decl.Assoc, Int, String)]
99+ , aliases :: Aliases
100+ , unions :: Unions
101101 }
102102
103103
@@ -144,7 +144,7 @@ data Interface =
144144 , iExports :: [Var.Value]
145145 , iTypes :: Types
146146 , iImports :: [Name.Raw]
147− , iAdts :: ADTs
147+ , iUnions :: Unions
148148 , iAliases :: Aliases
149149 , iFixities :: [(Decl.Assoc, Int, String)]
150150 }
@@ -162,7 +162,7 @@ toInterface pkgName modul =
162162 , iExports = exports modul
163163 , iTypes = types body'
164164 , iImports = imports modul
165− , iAdts = datatypes body'
165+ , iUnions = unions body'
166166 , iAliases = aliases body'
167167 , iFixities = fixities body'
168168 }
@@ -178,6 +178,6 @@ instance Binary Interface where
178178 put (iExports modul)
179179 put (iTypes modul)
180180 put (iImports modul)
181− put (iAdts modul)
181+ put (iUnions modul)
182182 put (iAliases modul)
183183 put (iFixities modul)
src/Canonicalize.hs+1−2
@@ -12,7 +12,6 @@ import AST.Module (Body(..))
1212import Elm.Utils ((|>))
1313
1414import qualified AST.Declaration as D
15−import qualified AST.Expression.General as E
1615import qualified AST.Expression.Valid as Valid
1716import qualified AST.Expression.Canonical as Canonical
1817import qualified AST.Module as Module
@@ -111,7 +110,7 @@ moduleHelp importDict interfaces modul@(Module.Module _ _ comment exports _ decl
111110 , types =
112111 Map.empty
113112
114− , datatypes =
113+ , unions =
115114 Map.fromList [ (name,(vars,ctors)) | D.Datatype name vars ctors <- nakedDecls ]
116115
117116 , fixities =
src/Canonicalize/Environment.hs+7−7
@@ -19,7 +19,7 @@ import Elm.Utils ((|>))
1919data Environment = Env
2020 { _home :: ModuleName.Canonical
2121 , _values :: Dict Var.Canonical
22− , _adts :: Dict Var.Canonical
22+ , _unions :: Dict Var.Canonical
2323 , _aliases :: Dict (Var.Canonical, [String], Type.Canonical)
2424 , _patterns :: Dict (Var.Canonical, Int)
2525 }
@@ -67,7 +67,7 @@ addPatch patch env =
6767 env { _values = insert name var (_values env) }
6868
6969 Union name var ->
70− env { _adts = insert name var (_adts env) }
70+ env { _unions = insert name var (_unions env) }
7171
7272 Alias name var ->
7373 env { _aliases = insert name var (_aliases env) }
@@ -111,9 +111,9 @@ builtinPatches =
111111-- TO TYPE DEALIASER
112112
113113toDealiaser :: Environment -> Map.Map String String
114−toDealiaser (Env _ _ adts aliases _) =
114+toDealiaser (Env _ _ unions aliases _) =
115115 let
116− dealiasAdt (localName, canonicalSet) =
116+ dealiasUnion (localName, canonicalSet) =
117117 case Set.toList canonicalSet of
118118 [canonicalName] ->
119119 Just (Var.toString canonicalName, localName)
@@ -127,8 +127,8 @@ toDealiaser (Env _ _ adts aliases _) =
127127 _ ->
128128 Nothing
129129
130− adtPairs =
131− Maybe.mapMaybe dealiasAdt (Map.toList adts)
130+ unionPairs =
131+ Maybe.mapMaybe dealiasUnion (Map.toList unions)
132132
133133 aliasPairs =
134134 Maybe.mapMaybe dealiasAlias (Map.toList aliases)
@@ -136,5 +136,5 @@ toDealiaser (Env _ _ adts aliases _) =
136136 add (key,value) dict =
137137 Map.insertWith (\v v' -> if length v < length v' then v else v') key value dict
138138 in
139− adtPairs ++ aliasPairs
139+ unionPairs ++ aliasPairs
140140 |> foldr add Map.empty
src/Canonicalize/Setup.hs+7−7
@@ -124,7 +124,7 @@ interfacePatches moduleName prefix interface =
124124 (Var.fromModule moduleName name, length args)
125125
126126 ctors =
127− concatMap snd (Map.elems (Module.iAdts interface))
127+ concatMap snd (Map.elems (Module.iUnions interface))
128128
129129 ctorNames =
130130 map fst ctors
@@ -132,7 +132,7 @@ interfacePatches moduleName prefix interface =
132132 concat
133133 [ map (patch Env.Value) (Map.keys (Module.iTypes interface))
134134 , map (patch Env.Value) ctorNames
135− , map (patch Env.Union) (Map.keys (Module.iAdts interface))
135+ , map (patch Env.Union) (Map.keys (Module.iUnions interface))
136136 , map aliasPatch (Map.toList (Module.iAliases interface))
137137 , map patternPatch ctors
138138 ]
@@ -182,7 +182,7 @@ valueToPatches region moduleName interface value =
182182 else [alias]
183183
184184 Nothing ->
185− case Map.lookup x (Module.iAdts interface) of
185+ case Map.lookup x (Module.iUnions interface) of
186186 Just (_,_) ->
187187 Result.ok [patch Env.Union x]
188188
@@ -194,7 +194,7 @@ valueToPatches region moduleName interface value =
194194 notFound getNames x
195195
196196 Var.Union givenName (Var.Listing givenCtorNames open) ->
197− case Map.lookup givenName (Module.iAdts interface) of
197+ case Map.lookup givenName (Module.iUnions interface) of
198198 Nothing ->
199199 notFound (map fst . Var.getUnions) givenName
200200
@@ -374,7 +374,7 @@ restrictToPublicApi interface =
374374 (get (Module.iAliases interface))
375375 (Var.getAliases exports)
376376
377− , Module.iAdts =
377+ , Module.iUnions =
378378 Map.fromList
379379 (Maybe.mapMaybe (trimUnions interface) unions)
380380 }
@@ -405,9 +405,9 @@ get dict key =
405405trimUnions
406406 :: Module.Interface
407407 -> (String, Var.Listing String)
408− -> Maybe (String, Module.AdtInfo String)
408+ -> Maybe (String, Module.UnionInfo String)
409409trimUnions interface (name, Var.Listing exportedCtors _) =
410− case Map.lookup name (Module.iAdts interface) of
410+ case Map.lookup name (Module.iUnions interface) of
411411 Nothing ->
412412 Nothing
413413
src/Canonicalize/Variable.hs+4−4
@@ -51,13 +51,13 @@ tvar
5151 (Var.Canonical, [String], Type.Canonical)
5252 )
5353tvar region env var =
54− case adts ++ aliases of
55− [] -> notFound region "type" (Map.keys (Env._adts env) ++ Map.keys (Env._aliases env)) var
54+ case unions ++ aliases of
55+ [] -> notFound region "type" (Map.keys (Env._unions env) ++ Map.keys (Env._aliases env)) var
5656 [v] -> Result.var' extract v
5757 vs -> preferLocals' region env extract "type" vs var
5858 where
59− adts =
60− map Left (maybe [] Set.toList (Map.lookup var (Env._adts env)))
59+ unions =
60+ map Left (maybe [] Set.toList (Map.lookup var (Env._unions env)))
6161
6262 aliases =
6363 map Right (maybe [] Set.toList (Map.lookup var (Env._aliases env)))
src/Nitpick/PatternMatches.hs+6−6
@@ -31,7 +31,7 @@ patternMatches interfaces modul =
3131 name = Module.name modul
3232 body = Module.body modul
3333 tagDict =
34− toTagDict interfaces name (Module.datatypes body)
34+ toTagDict interfaces name (Module.unions body)
3535 in
3636 const (Map.map (Map.map length) tagDict)
3737 <$> checkExpression tagDict (Module.program body)
@@ -52,8 +52,8 @@ data TagInfo = TagInfo
5252 }
5353
5454
55−toTagDict :: Module.Interfaces -> ModuleName.Canonical -> Module.ADTs -> TagDict
56−toTagDict interfaces localName localAdts =
55+toTagDict :: Module.Interfaces -> ModuleName.Canonical -> Module.Unions -> TagDict
56+toTagDict interfaces localName localUnions =
5757 let
5858 listTags =
5959 [ TagInfo "::" 2
@@ -76,14 +76,14 @@ toTagDict interfaces localName localAdts =
7676
7777 interfaceDict =
7878 interfaces
79− |> Map.map (toTagMapping . Module.iAdts)
79+ |> Map.map (toTagMapping . Module.iUnions)
8080 |> Map.mapKeysMonotonic Var.Module
81− |> Map.insert (Var.Module localName) (toTagMapping localAdts)
81+ |> Map.insert (Var.Module localName) (toTagMapping localUnions)
8282 in
8383 Map.union builtinDict interfaceDict
8484
8585
86−toTagMapping :: Module.ADTs -> Map.Map Tag [TagInfo]
86+toTagMapping :: Module.Unions -> Map.Map Tag [TagInfo]
8787toTagMapping adts =
8888 let
8989 toTagAndArity (_tvars, tagInfoList) =
src/Type/Environment.hs+8−8
@@ -31,7 +31,7 @@ data Environment = Environment
3131 }
3232
3333
34−initialize :: [Module.CanonicalAdt] -> IO Environment
34+initialize :: [Module.CanonicalUnion] -> IO Environment
3535initialize datatypes =
3636 do types <- makeTypes datatypes
3737 let env =
@@ -43,13 +43,13 @@ initialize datatypes =
4343 return $ env { _constructor = makeConstructors env datatypes }
4444
4545
46−makeTypes :: [Module.CanonicalAdt] -> IO TypeDict
46+makeTypes :: [Module.CanonicalUnion] -> IO TypeDict
4747makeTypes datatypes =
48− do adts <- mapM makeImported datatypes
49− bs <- mapM makeBuiltin builtins
50− return (Map.fromList (adts ++ bs))
48+ do unions <- mapM makeImported datatypes
49+ bs <- mapM makeBuiltin builtins
50+ return (Map.fromList (unions ++ bs))
5151 where
52− makeImported :: (V.Canonical, Module.AdtInfo V.Canonical) -> IO (String, Type)
52+ makeImported :: (V.Canonical, Module.UnionInfo V.Canonical) -> IO (String, Type)
5353 makeImported (name, _) =
5454 do tvar <- mkAtom name
5555 return (V.toString name, VarN tvar)
@@ -73,7 +73,7 @@ makeTypes datatypes =
7373
7474makeConstructors
7575 :: Environment
76− -> [Module.CanonicalAdt]
76+ -> [Module.CanonicalUnion]
7777 -> Map.Map String (IO (Int, [Variable], [Type], Type))
7878makeConstructors env datatypes =
7979 Map.fromList builtins
@@ -101,7 +101,7 @@ makeConstructors env datatypes =
101101
102102ctorToType
103103 :: Environment
104− -> (V.Canonical, Module.AdtInfo V.Canonical)
104+ -> (V.Canonical, Module.UnionInfo V.Canonical)
105105 -> [(String, IO (Int, [Variable], [Type], Type))]
106106ctorToType env (name, (tvars, ctors)) =
107107 zip (map (V.toString . fst) ctors) (map inst ctors)
src/Type/Inference.hs+12−12
@@ -44,7 +44,7 @@ genConstraints
4444 -> Module.CanonicalModule
4545 -> IO (Map.Map String T.Type, T.TypeConstraint)
4646genConstraints interfaces modul =
47− do env <- Env.initialize (canonicalizeAdts interfaces modul)
47+ do env <- Env.initialize (canonicalizeUnions interfaces modul)
4848
4949 ctors <-
5050 forM (Env.ctorNames env) $ \name ->
@@ -80,24 +80,24 @@ canonicalizeValues env (moduleName, iface) =
8080 )
8181
8282
83−canonicalizeAdts :: Module.Interfaces -> Module.CanonicalModule -> [CanonicalAdt]
84−canonicalizeAdts interfaces modul =
85− localAdts ++ importedAdts
83+canonicalizeUnions :: Module.Interfaces -> Module.CanonicalModule -> [CanonicalUnion]
84+canonicalizeUnions interfaces modul =
85+ localUnions ++ importedUnions
8686 where
87− localAdts :: [CanonicalAdt]
88− localAdts =
89− format (Module.name modul, datatypes (body modul))
87+ localUnions :: [CanonicalUnion]
88+ localUnions =
89+ format (Module.name modul, unions (body modul))
9090
91− importedAdts :: [CanonicalAdt]
92− importedAdts =
93− concatMap (format . second iAdts) (Map.toList interfaces)
91+ importedUnions :: [CanonicalUnion]
92+ importedUnions =
93+ concatMap (format . second iUnions) (Map.toList interfaces)
9494
9595
96−format :: (ModuleName.Canonical, Module.ADTs) -> [CanonicalAdt]
96+format :: (ModuleName.Canonical, Module.Unions) -> [CanonicalUnion]
9797format (home, adts) =
9898 map canonical (Map.toList adts)
9999 where
100− canonical :: (String, AdtInfo String) -> CanonicalAdt
100+ canonical :: (String, UnionInfo String) -> CanonicalUnion
101101 canonical (name, (tvars, ctors)) =
102102 ( toVar name
103103 , (tvars, map (first toVar) ctors)