@@ -1,5 +1,5 @@
11{-# LANGUAGE FlexibleContexts #-}
2−module Metadata.Prelude (add) where
2+module Transform.AddDefaultImports (add) where
33
44import qualified Data.Map as Map
55import qualified Data.Set as Set
@@ -8,20 +8,42 @@ import qualified AST.Module as Module
88import qualified AST.Variable as Var
99
1010
11−-- DEFINITION OF THE PRELUDE
12−
1311type ImportDict =
1412 Map.Map Module.Name ([String], Var.Listing Var.Value)
1513
1614
17−prelude :: ImportDict
18−prelude =
15+-- DESCRIPTION OF DEFAULT IMPORTS
16+
17+(==>) :: a -> b -> (a,b)
18+(==>) = (,)
19+
20+
21+defaultImports :: ImportDict
22+defaultImports =
1923 Map.fromList $ map (\name -> (name, ([], Var.openListing))) $
20− [ -- ["Basics"]
24+ [ ["Basics"] ==> ([], Var.openListing)
25+ , ["Maybe"] ==> ([], Var.Listing [maybe] False)
26+ , ["Result"] ==> ([], Var.Listing [result] False)
27+ , ["Signal"] ==> ([], Var.Listing [signal] False)
2128 ]
2229
2330
24−-- ADDING PRELUDE TO A MODULE
31+maybe : [Var.Value]
32+maybe =
33+ Var.ADT "Maybe" Var.openListing
34+
35+
36+result : Var.Value
37+result =
38+ Var.ADT "Result" Var.openListing
39+
40+
41+signal : Var.Value
42+signal =
43+ Var.ADT "Signal" (Var.Listing [] False)
44+
45+
46+-- ADDING DEFAULT IMPORTS TO A MODULE
2547
2648add :: Bool -> Module.Module exs body -> Module.Module exs body
2749add noPrelude (Module.Module moduleName path exports imports decls) =
@@ -29,7 +51,7 @@ add noPrelude (Module.Module moduleName path exports imports decls) =
2951 where
3052 ammendedImports =
3153 importDictToList $
32− foldr addImport (if noPrelude then Map.empty else prelude) imports
54+ foldr addImport (if noPrelude then Map.empty else defaultImports) imports
3355
3456
3557importDictToList :: ImportDict -> [(Module.Name, Module.ImportMethod)]