Problems with modular Prelude
It is not sufficient to just prevent the removal of unused imports for specific modules (critical modules will probably not be imported directly in the first place). Thus, the current solution is not sufficient. An alternative would be to import every base module implicitly (like the Prelude). NoImplicitPrelude would then be changed to prevent implicit import for every non-critical module.
Module | Needed for (desugaring of) ... | Critical ? |
---|---|---|
Base.Eq | deriving of Eq | No |
Base.Ord | deriving of Ord | No |
Base.Enum | deriving of Enum | No |
Base.Read | deriving of Read | No |
Base.Show | deriving of Show | No |
Base.Num | defaulting of Numerical types | No? |
Base.Fractional | defaulting of Numerical types | No? |
Base.Monad | desugaring of do-Notation | No? |
Base.Types | Built-in datatypes | Yes |
Base.Internal | desugaring of FunctionalPatterns, Let in PACKS | Yes |
Base.Failed | desugaring of non-exhaustive Patterns | Yes |
Base.Error | missing class methods | Yes |
Base.Function | id is needed for desugaring of Newtypes, flip in acy | Yes |
Base.Bool | ifThenElse is needed for desugaring of if in acy | No (with acy changes) |
Base.List | (++) is needed for desugaring of ListCompr and to derive Read | No? |
Edited by Kai Prott