haskell: tryOne should actually backtrack on failure
This commit is contained in:
parent
9b6229f9fd
commit
87a72c019f
|
@ -218,10 +218,14 @@ tryOne f = do
|
|||
let (l, r) = U.splitAt 1 (peText env)
|
||||
case U.uncons l of
|
||||
Nothing -> return Nothing
|
||||
Just (fi, r2) -> (
|
||||
Just (fi, r2) ->
|
||||
(if not ((slen r2) == 0) then error "tryOne : unable to iterator over characters" else ())
|
||||
`seq`
|
||||
(shiftEnv (slen l, r) >> return (f fi)))
|
||||
case f fi of
|
||||
Nothing -> return Nothing
|
||||
Just x -> do
|
||||
shiftEnv (slen l, r)
|
||||
return . Just $ x
|
||||
|
||||
-- | A case tree for `eats`
|
||||
data HandleTree x =
|
||||
|
|
Loading…
Reference in a new issue