summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimonmar <unknown>2000-01-30 10:11:32 +0000
committersimonmar <unknown>2000-01-30 10:11:32 +0000
commit84ccb85d938577d5244e51678e1b459d27781855 (patch)
treef00796f33fd232e66aac2e0271da978cf79ea80a
parent3427092ef9719619eb6137bc9b7b4bddcb69b2f4 (diff)
downloadhaskell-84ccb85d938577d5244e51678e1b459d27781855.tar.gz
[project @ 2000-01-30 10:11:32 by simonmar]
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.
-rw-r--r--ghc/lib/std/PrelIOBase.lhs19
1 files changed, 18 insertions, 1 deletions
diff --git a/ghc/lib/std/PrelIOBase.lhs b/ghc/lib/std/PrelIOBase.lhs
index e39edfc274..9f8aa77b69 100644
--- a/ghc/lib/std/PrelIOBase.lhs
+++ b/ghc/lib/std/PrelIOBase.lhs
@@ -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
%
@@ -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.
+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 #))