[project @ 2000-01-30 10:11:32 by simonmar]
authorsimonmar <unknown>
Sun, 30 Jan 2000 10:11:32 +0000 (10:11 +0000)
committersimonmar <unknown>
Sun, 30 Jan 2000 10:11:32 +0000 (10:11 +0000)
Add notes about where the IO representation is wired in to various
parts of the source tree, since I'm about to add some more.

ghc/lib/std/PrelIOBase.lhs

index e39edfc..9f8aa77 100644 (file)
@@ -1,5 +1,5 @@
 % -----------------------------------------------------------------------------
 % -----------------------------------------------------------------------------
-% $Id: PrelIOBase.lhs,v 1.16 1999/12/03 16:17:42 simonmar Exp $
+% $Id: PrelIOBase.lhs,v 1.17 2000/01/30 10:11:32 simonmar Exp $
 % 
 % (c) The AQUA Project, Glasgow University, 1994-1998
 %
 % 
 % (c) The AQUA Project, Glasgow University, 1994-1998
 %
@@ -55,6 +55,23 @@ The IO Monad is just an instance of the ST monad, where the state is
 the real world.  We use the exception mechanism (in PrelException) to
 implement IO exceptions.
 
 the real world.  We use the exception mechanism (in PrelException) to
 implement IO exceptions.
 
+NOTE: The IO representation is deeply wired in to various parts of the
+system.  The following list may or may not be exhaustive:
+
+Compiler  - types of various primitives in PrimOp.lhs
+
+RTS      - forceIO (StgMiscClosures.hc)
+         - catchzh_fast, (un)?blockAsyncExceptionszh_fast, raisezh_fast 
+           (Exceptions.hc)
+         - raiseAsync (Schedule.c)
+
+Prelude   - PrelIOBase.lhs, and several other places including
+           PrelException.lhs.
+
+Libraries - parts of hslibs/lang.
+
+--SDM
+
 \begin{code}
 #ifndef __HUGS__
 newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))
 \begin{code}
 #ifndef __HUGS__
 newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))