Skip to content

Commit 37515a1

Browse files
committed
Temporarily use tailRec for span
1 parent 2e5b605 commit 37515a1

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

src/Data/Array.purs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ import Prelude
114114
import Control.Alt ((<|>))
115115
import Control.Alternative (class Alternative)
116116
import Control.Lazy (class Lazy, defer)
117-
import Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM2)
117+
import Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM2, tailRec)
118118
import Control.Monad.ST (pureST)
119119
import Data.Array.ST (unsafeFreeze, emptySTArray, pushSTArray)
120120
import Data.Array.ST.Iterator (iterator, iterate, pushWhile)
@@ -521,13 +521,13 @@ span p arr =
521521
{ init: arr, rest: [] }
522522
where
523523
breakIndex = go 0
524-
go i =
524+
go = tailRec \i ->
525525
-- This looks like a good opportunity to use the Monad Maybe instance,
526526
-- but it's important to write out an explicit case expression here in
527527
-- order to ensure that TCO is triggered.
528528
case index arr i of
529-
Just x -> if p x then go (i+1) else Just i
530-
Nothing -> Nothing
529+
Just x -> if p x then Loop (i + 1) else Done (Just i)
530+
Nothing -> Done Nothing
531531

532532
-- | Group equal, consecutive elements of an array into arrays.
533533
-- |

0 commit comments

Comments
 (0)