@@ -4,27 +4,30 @@ import Prelude
4
4
5
5
import Control.Alt ((<|>))
6
6
import Control.Apply ((*>))
7
- import Control.Monad.Aff (Aff () , runAff , later , later' , forkAff , forkAll , Canceler (..), cancel , attempt , finally , apathize )
8
- import Control.Monad.Aff.AVar (AVAR () , makeVar , makeVar' , putVar , modifyVar , takeVar , killVar )
7
+ import Control.Monad.Aff (Aff , runAff , later , later' , forkAff , forkAll , Canceler (..), cancel , attempt , finally , apathize )
8
+ import Control.Monad.Aff.AVar (AVAR , makeVar , makeVar' , putVar , modifyVar , takeVar , killVar )
9
9
import Control.Monad.Aff.Console (log )
10
10
import Control.Monad.Aff.Par (Par (..), runPar )
11
11
import Control.Monad.Cont.Class (callCC )
12
- import Control.Monad.Eff (Eff () )
13
- import Control.Monad.Eff.Console (CONSOLE () )
14
- import Control.Monad.Eff.Exception (EXCEPTION () , throwException , error )
12
+ import Control.Monad.Eff (Eff )
13
+ import Control.Monad.Eff.Console (CONSOLE )
14
+ import Control.Monad.Eff.Exception (EXCEPTION , throwException , error )
15
15
import Control.Monad.Error.Class (throwError )
16
16
import Control.Monad.Rec.Class (tailRecM )
17
17
18
- import Data.Array (replicate )
19
18
import Data.Either (Either (..), either )
19
+ import Data.Unfoldable (replicate )
20
20
21
21
type Test a = forall e . Aff (console :: CONSOLE | e ) a
22
22
type TestAVar a = forall e . Aff (console :: CONSOLE , avar :: AVAR | e ) a
23
23
24
+ replicateArray :: forall a . Int -> a -> Array a
25
+ replicateArray = replicate
26
+
24
27
test_sequencing :: Int -> Test Unit
25
28
test_sequencing 0 = log " Done"
26
29
test_sequencing n = do
27
- later' 100 (log (show (n / 10 ) ++ " seconds left" ))
30
+ later' 100 (log (show (n / 10 ) <> " seconds left" ))
28
31
test_sequencing (n - 1 )
29
32
30
33
test_pure :: Test Unit
@@ -49,7 +52,7 @@ test_putTakeVar = do
49
52
v <- makeVar
50
53
forkAff (later $ putVar v 1.0 )
51
54
a <- takeVar v
52
- log (" Success: Value " ++ show a)
55
+ log (" Success: Value " <> show a)
53
56
54
57
test_killFirstForked :: Test Unit
55
58
test_killFirstForked = do
@@ -136,7 +139,7 @@ test_syncTailRecM = do
136
139
log (if b then " Success: Synchronous tailRecM resolved synchronously"
137
140
else " Failure: Synchronous tailRecM resolved asynchronously" )
138
141
where
139
- go { n = 0 , v } = do
142
+ go { n: 0 , v } = do
140
143
modifyVar (const true ) v
141
144
pure (Right 0 )
142
145
go { n, v } = pure (Left { n: n - 1 , v })
@@ -155,13 +158,13 @@ loopAndBounce n = do
155
158
all :: forall eff . Int -> Aff (console :: CONSOLE , avar :: AVAR | eff ) Unit
156
159
all n = do
157
160
var <- makeVar' 0
158
- forkAll $ replicate n (modifyVar (+ 1 ) var)
161
+ forkAll $ replicateArray n (modifyVar (_ + 1 ) var)
159
162
count <- takeVar var
160
163
log (" Forked " <> show count)
161
164
162
165
cancelAll :: forall eff . Int -> Aff (console :: CONSOLE , avar :: AVAR | eff ) Unit
163
166
cancelAll n = do
164
- canceler <- forkAll $ replicate n (later' 100000 (log " oops" ))
167
+ canceler <- forkAll $ replicateArray n (later' 100000 (log " oops" ))
165
168
canceled <- cancel canceler (error " bye" )
166
169
log (" Cancelled all: " <> show canceled)
167
170
0 commit comments