Difference between revisions of "No import of Prelude"
(from Haskell-Cafe) |
(→Answer: Added newer -X version of command line switch) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
== Question == |
== Question == |
||
− | Is it possible |
+ | Is it possible to not load the Prelude when compiling a Haskell module? |
== Answer == |
== Answer == |
||
Line 15: | Line 15: | ||
{-# LANGUAGE NoImplicitPrelude #-} |
{-# LANGUAGE NoImplicitPrelude #-} |
||
</haskell> |
</haskell> |
||
− | to the top of the module, or equivalently compile with <code>-fno-implicit-prelude</code> option. |
+ | to the top of the module, or equivalently compile with <code>-XNoImplicitPrelude</code> (or older <code>-fno-implicit-prelude</code>) option. |
− | <hask>import Prelude()<hask> is less aggressive than <code>NoImplicitPrelude</code>. |
+ | <hask>import Prelude()</hask> is less aggressive than <code>NoImplicitPrelude</code>. |
− | E.g. with the first method |
+ | E.g. with the first method some functions are imported which are silently inserted for several syntactic constructs. |
+ | A bare untyped integral number is rewritten as <hask>fromIntegral num</hask> |
||
+ | (so its type will be <hask>Num a => a</hask>), |
||
+ | and list generation syntax is rewritten as follows: |
||
+ | <hask>[n..]</hask> <math>\rightarrow</math> <hask>enumFrom</hask>, |
||
+ | <hask>[n..m]</hask> <math>\rightarrow</math> <hask>enumFromTo</hask>, |
||
+ | <hask>[n,o..]</hask> <math>\rightarrow</math> <hask>enumFromThen</hask>, |
||
+ | <hask>[n,o..m]</hask> <math>\rightarrow</math> <hask>enumFromThenTo</hask>. |
||
+ | |||
+ | There are some such for which even <code>-fno-implicit-prelude</code> isn't enough; |
||
+ | I think these are documented in the "bugs" section of the GHC manual. |
||
== See also == |
== See also == |
Latest revision as of 15:26, 15 November 2011
Question
Is it possible to not load the Prelude when compiling a Haskell module?
Answer
You can either do
import Prelude()
or add
{-# LANGUAGE NoImplicitPrelude #-}
to the top of the module, or equivalently compile with -XNoImplicitPrelude
(or older -fno-implicit-prelude
) option.
import Prelude()
is less aggressive than NoImplicitPrelude
.
E.g. with the first method some functions are imported which are silently inserted for several syntactic constructs.
A bare untyped integral number is rewritten as fromIntegral num
(so its type will be Num a => a
),
and list generation syntax is rewritten as follows:
[n..]
enumFrom
,
[n..m]
enumFromTo
,
[n,o..]
enumFromThen
,
[n,o..m]
enumFromThenTo
.
There are some such for which even -fno-implicit-prelude
isn't enough;
I think these are documented in the "bugs" section of the GHC manual.
See also
- Haskell-Cafe: Not to load Prelude