Safe Haskell | None |
---|---|
Language | Haskell98 |
Desugaring passes
- desugar :: (Applicative m, MonadSupply m, MonadError MultipleErrors m) => [Module] -> m [Module]
Documentation
desugar :: (Applicative m, MonadSupply m, MonadError MultipleErrors m) => [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 using the
Prelude.Monad
type class - 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.