1 \section[GHCmain]{Module @GHCmain@}
3 This is the mainPrimIO that must be used for Haskell~1.3.
6 module GHCmain( mainPrimIO ) where
9 import {-# SOURCE #-} qualified Main -- for type of "Main.main"
15 mainPrimIO = ST $ \ s ->
16 case Main.main of { IO main_guts ->
18 IOok s2 () -> STret s2 ()
19 IOfail s2 err -> error ("I/O error: "++showsPrec 0 err "\n")
25 Nota Bene! @mainIO@ is written as an explicit function, rather than
26 by saying: @mainIO = requestToIO main@ so that the code generator
27 recognises @mainIO@ as a {\em function} (hence HNF, hence not
28 updatable), rather than a zero-arity CAF (hence updatable). If it is
29 updated, then we have a mega-space leak, because the entire action
30 (@requestToIO main@) is retained indefinitely.
32 (This doesn't waste work because @mainIO@ is only used once.)