1
1
mirror of https://github.com/github/semantic.git synced 2024-12-22 06:11:49 +03:00

Add a function to run all the steps in a myers algorithm.

This commit is contained in:
Rob Rix 2017-03-13 11:28:23 -04:00
parent c9354e38ff
commit 6aab59ba18

View File

@ -55,6 +55,11 @@ runMyers eq = runAll $ MyersState (Vector.replicate 100 0) (Vector.replicate 100
Left a -> a
Right next -> uncurry runAll next
runMyersSteps :: HasCallStack => (a -> a -> Bool) -> MyersState -> Myers a b -> [(MyersState, Myers a b)]
runMyersSteps eq state step = let ?callStack = popCallStack callStack in (state, step) : case runMyersStep eq state step of
Left result -> [ (state, return result) ]
Right next -> uncurry (runMyersSteps eq) next
runMyersStep :: HasCallStack => (a -> a -> Bool) -> MyersState -> Myers a b -> Either b (MyersState, Myers a b)
runMyersStep eq state step = let ?callStack = popCallStack callStack in case step of
Return a -> Left a