on 501c607 help sign in
elk/src/Transform/AddDefaultImports.hs
37 lines 1.1 kB history raw
1module Transform.AddDefaultImports (add, defaultImports) where
3import qualified AST.Module as Module
4import qualified AST.Variable as Var
7-- DESCRIPTION OF DEFAULT IMPORTS
9(==>) :: a -> b -> (a,b)
10(==>) = (,)
13defaultImports :: [(Module.Name, Module.ImportMethod)]
14defaultImports =
15 [ ["Basics"] ==> Module.ImportMethod Nothing Var.openListing
16 , ["List"] ==> exposing [Var.Value "::"]
17 , ["Maybe"] ==> exposing [Var.Union "Maybe" Var.openListing]
18 , ["Result"] ==> exposing [Var.Union "Result" Var.openListing]
19 , ["Signal"] ==> exposing [Var.Union "Signal" Var.closedListing]
20 ]
23exposing :: [Var.Value] -> Module.ImportMethod
24exposing vars =
25 Module.ImportMethod Nothing (Var.listing vars)
28-- ADDING DEFAULT IMPORTS TO A MODULE
30add :: Bool -> Module.Module exs body -> Module.Module exs body
31add needsDefaults (Module.Module moduleName path exports imports decls) =
32 Module.Module moduleName path exports ammendedImports decls
33 where
34 ammendedImports =
35 if needsDefaults
36 then defaultImports ++ imports
37 else imports