Safe Haskell | None |
---|---|
Language | Haskell2010 |
Desugaring passes
Synopsis
- desugar :: (MonadSupply m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => [ExternsFile] -> [Module] -> m [Module]
- module Language.PureScript.Sugar.TypeDeclarations
- module Language.PureScript.Sugar.TypeClasses.Deriving
- module Language.PureScript.Sugar.TypeClasses
- module Language.PureScript.Sugar.Operators
- module Language.PureScript.Sugar.ObjectWildcards
- module Language.PureScript.Sugar.Names
- module Language.PureScript.Sugar.LetPattern
- module Language.PureScript.Sugar.AdoNotation
- module Language.PureScript.Sugar.DoNotation
- module Language.PureScript.Sugar.CaseDeclarations
- module Language.PureScript.Sugar.BindingGroups
Documentation
desugar :: (MonadSupply m, MonadError MultipleErrors m, MonadWriter MultipleErrors m) => [ExternsFile] -> [Module] -> m [Module] Source #
The desugaring pipeline proceeds as follows:
- Remove signed literals in favour of
negate
applications - Desugar object literals with wildcards into lambdas
- Desugar operator sections
- Desugar do-notation
- Desugar ado-notation
- Desugar top-level case declarations into explicit case expressions
- Desugar type declarations into value declarations with explicit type annotations
- Qualify any unqualified names and types
- Rebracket user-defined binary operators
- Introduce type synonyms for type class dictionaries
- Group mutually recursive value and data declarations into binding groups.