|
1 | 1 | module Control.Monad.IO |
2 | | - ( INFINITY |
| 2 | + ( module Control.Monad.IO.Effect |
3 | 3 | , IO(..) |
| 4 | + , launchIO |
4 | 5 | ) where |
5 | 6 |
|
6 | 7 | import Control.Alt (class Alt) |
7 | 8 | import Control.Alternative (class Alternative) |
8 | | -import Control.Monad.Aff (Aff) |
| 9 | +import Control.Monad.Aff (Aff, launchAff) |
9 | 10 | import Control.Monad.Aff.Class (class MonadAff) |
10 | 11 | import Control.Monad.Aff.Unsafe (unsafeCoerceAff) |
11 | 12 | import Control.Monad.Eff.Class (class MonadEff, liftEff) |
12 | 13 | import Control.Monad.Eff.Exception (Error) |
13 | 14 | import Control.Monad.Eff.Unsafe (unsafeCoerceEff) |
14 | 15 | import Control.Monad.Error.Class (class MonadError) |
15 | | -import Control.Monad.IO (INFINITY) |
| 16 | +import Control.Monad.IO.Effect (INFINITY) |
| 17 | +import Control.Monad.IOSync (IOSync) |
16 | 18 | import Control.Monad.Rec.Class (class MonadRec) |
17 | 19 | import Control.MonadZero (class MonadZero) |
18 | 20 | import Control.Plus (class Plus) |
19 | 21 | import Data.Monoid (class Monoid) |
20 | | -import Data.Newtype (class Newtype, wrap) |
| 22 | +import Data.Newtype (class Newtype, unwrap, wrap) |
21 | 23 | import Prelude |
22 | 24 |
|
23 | | -foreign import data INFINITY :: Effect |
24 | | - |
25 | 25 | newtype IO a = IO (Aff (infinity :: INFINITY) a) |
26 | 26 |
|
| 27 | +launchIO :: ∀ a. IO a -> IOSync Unit |
| 28 | +launchIO = void <<< liftEff <<< launchAff <<< unwrap |
| 29 | + |
27 | 30 | derive instance newtypeIO :: Newtype (IO a) _ |
28 | 31 |
|
29 | 32 | derive newtype instance functorIO :: Functor IO |
|
0 commit comments