Difference between revisions of "No import of Prelude"

From HaskellWiki
Jump to navigation Jump to search
(→‎Answer: Added newer -X version of command line switch)
 
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>.
Line 29: Line 29:
 
There are some such for which even <code>-fno-implicit-prelude</code> isn't enough;
 
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.
 
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