git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Factor out Sugar module
d32d9ebPhil Freeman
purescript.cabal+15−14
@@ -1,5 +1,5 @@
1name: purescript
1name: purescript
2−version: 0.2.9.3
2+version: 0.2.10
3cabal-version: >=1.8
3cabal-version: >=1.8
4build-type: Simple
4build-type: Simple
5license: MIT
5license: MIT
@@ -18,18 +18,27 @@ library
18 directory -any, filepath -any, mtl -any, parsec -any, syb -any,
18 directory -any, filepath -any, mtl -any, parsec -any, syb -any,
19 transformers -any, utf8-string -any
19 transformers -any, utf8-string -any
20 exposed-modules: Data.Generics.Extras
20 exposed-modules: Data.Generics.Extras
21− Language.PureScript.Options
22 Language.PureScript
21 Language.PureScript
22+ Language.PureScript.Options
23+ Language.PureScript.Declarations
24+ Language.PureScript.Kinds
25+ Language.PureScript.Names
26+ Language.PureScript.Types
27+ Language.PureScript.Unknown
28+ Language.PureScript.Values
29+ Language.PureScript.Scope
30+ Language.PureScript.Sugar
31+ Language.PureScript.Sugar.CaseDeclarations
32+ Language.PureScript.Sugar.DoNotation
33+ Language.PureScript.Sugar.TypeDeclarations
34+ Language.PureScript.Sugar.BindingGroups
35+ Language.PureScript.Sugar.Operators
23 Language.PureScript.CodeGen
36 Language.PureScript.CodeGen
24 Language.PureScript.CodeGen.Externs
37 Language.PureScript.CodeGen.Externs
25 Language.PureScript.CodeGen.JS
38 Language.PureScript.CodeGen.JS
26 Language.PureScript.CodeGen.JS.AST
39 Language.PureScript.CodeGen.JS.AST
27 Language.PureScript.CodeGen.Monad
40 Language.PureScript.CodeGen.Monad
28 Language.PureScript.CodeGen.Optimize
41 Language.PureScript.CodeGen.Optimize
29− Language.PureScript.Declarations
30− Language.PureScript.Kinds
31− Language.PureScript.Names
32− Language.PureScript.Operators
33 Language.PureScript.Parser
42 Language.PureScript.Parser
34 Language.PureScript.Parser.Common
43 Language.PureScript.Parser.Common
35 Language.PureScript.Parser.Declarations
44 Language.PureScript.Parser.Declarations
@@ -48,14 +57,6 @@ library
48 Language.PureScript.TypeChecker.Monad
57 Language.PureScript.TypeChecker.Monad
49 Language.PureScript.TypeChecker.Synonyms
58 Language.PureScript.TypeChecker.Synonyms
50 Language.PureScript.TypeChecker.Types
59 Language.PureScript.TypeChecker.Types
51− Language.PureScript.Types
52− Language.PureScript.Unknown
53− Language.PureScript.Values
54− Language.PureScript.CaseDeclarations
55− Language.PureScript.DoNotation
56− Language.PureScript.TypeDeclarations
57− Language.PureScript.BindingGroups
58− Language.PureScript.Scope
59 exposed: True
60 exposed: True
60 buildable: True
61 buildable: True
61 hs-source-dirs: src
62 hs-source-dirs: src
src/Language/PureScript.hs+3−12
@@ -23,24 +23,15 @@ import Language.PureScript.Parser as P
23import Language.PureScript.CodeGen as P
23import Language.PureScript.CodeGen as P
24import Language.PureScript.TypeChecker as P
24import Language.PureScript.TypeChecker as P
25import Language.PureScript.Pretty as P
25import Language.PureScript.Pretty as P
26−import Language.PureScript.Operators as P
26+import Language.PureScript.Sugar as P
27−import Language.PureScript.CaseDeclarations as P
28−import Language.PureScript.TypeDeclarations as P
29−import Language.PureScript.BindingGroups as P
30−import Language.PureScript.DoNotation as P
31import Language.PureScript.Options as P
27import Language.PureScript.Options as P
32
28
33import Data.List (intercalate)
29import Data.List (intercalate)
34−import Control.Monad (forM_, (>=>))
30+import Control.Monad (forM_)
35
31
36compile :: Options -> [Module] -> Either String (String, String, Environment)
32compile :: Options -> [Module] -> Either String (String, String, Environment)
37compile opts ms = do
33compile opts ms = do
38− bracketted <- rebracket ms
39− desugared <- desugarDo
34+ desugared <- desugar ms
40− >=> desugarCasesModule
41− >=> desugarTypeDeclarationsModule
42− >=> (return . createBindingGroupsModule)
43− $ bracketted
44 (_, env) <- runCheck $ forM_ desugared $ \(Module moduleName decls) -> typeCheckAll (ModuleName moduleName) decls
35 (_, env) <- runCheck $ forM_ desugared $ \(Module moduleName decls) -> typeCheckAll (ModuleName moduleName) decls
45 let js = prettyPrintJS . map (optimize opts) . concatMap (flip (moduleToJs opts) env) $ desugared
36 let js = prettyPrintJS . map (optimize opts) . concatMap (flip (moduleToJs opts) env) $ desugared
46 let exts = intercalate "\n" . map (flip moduleToPs env) $ desugared
37 let exts = intercalate "\n" . map (flip moduleToPs env) $ desugared
src/Language/PureScript/Sugar.hsnew file+32
@@ -0,0 +1,32 @@
1+-----------------------------------------------------------------------------
2+--
3+-- Module : Language.PureScript.Sugar
4+-- Copyright : (c) Phil Freeman 2013
5+-- License : MIT
6+--
7+-- Maintainer : Phil Freeman <paf31@cantab.net>
8+-- Stability : experimental
9+-- Portability :
10+--
11+-- |
12+--
13+-----------------------------------------------------------------------------
14+
15+module Language.PureScript.Sugar (desugar, module S) where
16+
17+import Control.Monad
18+
19+import Language.PureScript.Declarations
20+
21+import Language.PureScript.Sugar.Operators as S
22+import Language.PureScript.Sugar.DoNotation as S
23+import Language.PureScript.Sugar.CaseDeclarations as S
24+import Language.PureScript.Sugar.TypeDeclarations as S
25+import Language.PureScript.Sugar.BindingGroups as S
26+
27+desugar :: [Module] -> Either String [Module]
28+desugar = rebracket
29+ >=> desugarDo
30+ >=> desugarCasesModule
31+ >=> desugarTypeDeclarationsModule
32+ >=> return . createBindingGroupsModule
src/Language/PureScript/BindingGroups.hs → src/Language/PureScript/Sugar/BindingGroups.hsrenamed+1−1
@@ -12,7 +12,7 @@
12--
12--
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−module Language.PureScript.BindingGroups (
15+module Language.PureScript.Sugar.BindingGroups (
16 createBindingGroups,
16 createBindingGroups,
17 createBindingGroupsModule
17 createBindingGroupsModule
18) where
18) where
src/Language/PureScript/CaseDeclarations.hs → src/Language/PureScript/Sugar/CaseDeclarations.hsrenamed+1−1
@@ -12,7 +12,7 @@
12--
12--
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−module Language.PureScript.CaseDeclarations (
15+module Language.PureScript.Sugar.CaseDeclarations (
16 desugarCases,
16 desugarCases,
17 desugarCasesModule
17 desugarCasesModule
18) where
18) where
src/Language/PureScript/DoNotation.hs → src/Language/PureScript/Sugar/DoNotation.hsrenamed+2−2
@@ -1,6 +1,6 @@
1-----------------------------------------------------------------------------
1-----------------------------------------------------------------------------
2--
2--
3−-- Module : Language.PureScript.DoNotation
3+-- Module : Language.PureScript.Sugar.DoNotation
4-- Copyright : (c) Phil Freeman 2013
4-- Copyright : (c) Phil Freeman 2013
5-- License : MIT
5-- License : MIT
6--
6--
@@ -12,7 +12,7 @@
12--
12--
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−module Language.PureScript.DoNotation (
15+module Language.PureScript.Sugar.DoNotation (
16 desugarDo
16 desugarDo
17) where
17) where
18
18
src/Language/PureScript/Operators.hs → src/Language/PureScript/Sugar/Operators.hsrenamed+2−2
@@ -1,6 +1,6 @@
1-----------------------------------------------------------------------------
1-----------------------------------------------------------------------------
2--
2--
3−-- Module : Language.PureScript.Operators
3+-- Module : Language.PureScript.Sugar.Operators
4-- Copyright : (c) Phil Freeman 2013
4-- Copyright : (c) Phil Freeman 2013
5-- License : MIT
5-- License : MIT
6--
6--
@@ -14,7 +14,7 @@
14
14
15{-# LANGUAGE Rank2Types #-}
15{-# LANGUAGE Rank2Types #-}
16
16
17−module Language.PureScript.Operators (
17+module Language.PureScript.Sugar.Operators (
18 rebracket
18 rebracket
19) where
19) where
20
20
src/Language/PureScript/TypeDeclarations.hs → src/Language/PureScript/Sugar/TypeDeclarations.hsrenamed+2−2
@@ -1,6 +1,6 @@
1-----------------------------------------------------------------------------
1-----------------------------------------------------------------------------
2--
2--
3−-- Module : Language.PureScript.TypeDeclarations
3+-- Module : Language.PureScript.Sugar.TypeDeclarations
4-- Copyright : (c) Phil Freeman 2013
4-- Copyright : (c) Phil Freeman 2013
5-- License : MIT
5-- License : MIT
6--
6--
@@ -12,7 +12,7 @@
12--
12--
13-----------------------------------------------------------------------------
13-----------------------------------------------------------------------------
14
14
15−module Language.PureScript.TypeDeclarations (
15+module Language.PureScript.Sugar.TypeDeclarations (
16 desugarTypeDeclarations,
16 desugarTypeDeclarations,
17 desugarTypeDeclarationsModule
17 desugarTypeDeclarationsModule
18) where
18) where