File tree Expand file tree Collapse file tree 2 files changed +4
-11
lines changed Expand file tree Collapse file tree 2 files changed +4
-11
lines changed Original file line number Diff line number Diff line change 15
15
" package.json"
16
16
],
17
17
"dependencies" : {
18
- "purescript-arrays" : " * " ,
18
+ "purescript-arrays" : " ~0.2.2 " ,
19
19
"purescript-tuples" : " *" ,
20
20
"purescript-maybe" : " *"
21
21
}
Original file line number Diff line number Diff line change @@ -2,30 +2,23 @@ module Data.Unfoldable where
2
2
3
3
import Data.Maybe
4
4
import Data.Tuple
5
+ import Data.Array.ST
5
6
import Control.Monad.Eff
6
7
import Control.Monad.ST
7
8
8
9
class Unfoldable t where
9
10
unfoldr :: forall a b . (b -> Maybe (Tuple a b )) -> b -> t a
10
11
11
- foreign import newEmptySTArray
12
- " function newEmptySTArray() {\
13
- \ return [];\
14
- \}" :: forall eff h a . Eff (st :: ST h | eff ) (STArray h a )
15
-
16
12
instance unfoldableArray :: Unfoldable [] where
17
13
unfoldr f b = runPure (runSTArray (do
18
- arr <- newEmptySTArray
14
+ arr <- emptySTArray
19
15
seed <- newSTRef b
20
- idx <- newSTRef 0
21
16
untilE $ do
22
17
b1 <- readSTRef seed
23
18
case f b1 of
24
19
Nothing -> return true
25
20
Just (Tuple a b2) -> do
26
- i <- readSTRef idx
27
- pokeSTArray arr i a
21
+ pushSTArray arr a
28
22
writeSTRef seed b2
29
- writeSTRef idx (i + 1 )
30
23
return false
31
24
return arr))
You can’t perform that action at this time.
0 commit comments