File tree Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Expand file tree Collapse file tree 1 file changed +4
-4
lines changed Original file line number Diff line number Diff line change @@ -114,7 +114,7 @@ import Prelude
114114import Control.Alt ((<|>))
115115import Control.Alternative (class Alternative )
116116import 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 )
118118import Control.Monad.ST (pureST )
119119import Data.Array.ST (unsafeFreeze , emptySTArray , pushSTArray )
120120import 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-- |
You can’t perform that action at this time.
0 commit comments