[project @ 1997-11-24 20:37:25 by sof]
[ghc-hetmet.git] / ghc / lib / glaExts / GlaExts.lhs
1 %
2 % (c) The AQUA Project, Glasgow University, 1994-1996
3 %
4 \section[GlaExts]{The @GlaExts@ interface}
5
6 Compatibility cruft: Deprecated! Don't use!  This rug will
7 dissappear from underneath your feet very soon.
8
9 This module will eventually be the interface to GHC-ONLY extensions:
10 i.e. unboxery and primitive operations over unboxed values.
11
12 OLD:
13 The @GlaExts@ packages up various Glasgow extensions and
14 exports them all through one interface. The Idea being that
15 a Haskell program using a Glasgow extension doesn't have to
16 selective import of obscure/likely-to-move (believe me, we
17 really like to move functions around for the prelude bits!)
18 GHC interfaces - instead import the GlaExts rag bag and you should be away!
19
20 \begin{code}
21 module GlaExts
22
23        (
24         ST, RealWorld,
25
26         unsafePerformIO, 
27         unsafeInterleaveIO,
28         
29         -- operations for interfacing IO and ST
30         --
31         stToIO,       -- :: ST RealWorld a -> IO a
32         ioToST,       -- :: IO a -> ST RealWorld a
33
34         -- compatibility cruft
35         PrimIO,
36         ioToPrimIO,
37         primIOToIO,
38         unsafePerformPrimIO,
39         thenPrimIO, thenIO_Prim,
40         seqPrimIO, returnPrimIO,
41
42         seqST, thenST, returnST,
43
44         -- Everything from module ByteArray:
45         module ByteArray,
46
47         -- Same for Mutable(Byte)Array interface:
48         module MutableArray,
49         
50         -- the representation of some basic types:
51         Int(..),Addr(..),Word(..),Float(..),Double(..),Integer(..),Char(..),
52
53         -- misc bits
54         trace,
55         Lift(..),
56
57         -- and finally, all the unboxed primops of GHC!
58         module GHC
59
60        ) where
61
62 import GHC
63 import STBase
64 import IOExts
65 import PrelBase
66 import ByteArray
67 import MutableArray
68 import Monad
69 import IOBase
70 import Foreign
71
72 type PrimIO a = IO a
73 primIOToIO io = io
74 ioToPrimIO io = io
75 unsafePerformPrimIO = unsafePerformIO
76 thenPrimIO :: PrimIO a -> (a -> PrimIO b) -> PrimIO b
77 thenPrimIO = (>>=)
78
79 seqPrimIO :: PrimIO a -> PrimIO b -> PrimIO b
80 seqPrimIO = (>>)
81
82 returnPrimIO :: a -> PrimIO a
83 returnPrimIO = return
84
85 thenIO_Prim :: PrimIO a -> (a -> IO b) -> IO b
86 thenIO_Prim = (>>=)
87
88 -- ST compatibility stubs.
89 thenST :: ST s a -> ( a -> ST s b) -> ST s b
90 thenST = (>>=)
91
92 seqST :: ST s a -> ST s b -> ST s b
93 seqST = (>>)
94
95 returnST :: a -> ST s a
96 returnST = return
97 \end{code}