diff options
-rw-r--r-- | edit-lens/src/Data/String/DFST.hs | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/edit-lens/src/Data/String/DFST.hs b/edit-lens/src/Data/String/DFST.hs index 702a0d8..2eeb368 100644 --- a/edit-lens/src/Data/String/DFST.hs +++ b/edit-lens/src/Data/String/DFST.hs | |||
@@ -28,7 +28,12 @@ runDFST :: forall state. Ord state => DFST state -> String -> Maybe String | |||
28 | runDFST dfst@DFST{..} str = let (finalState, str') = runDFST' dfst stInitial str id | 28 | runDFST dfst@DFST{..} str = let (finalState, str') = runDFST' dfst stInitial str id |
29 | in str' "" <$ guard (finalState `Set.member` stAccept) | 29 | in str' "" <$ guard (finalState `Set.member` stAccept) |
30 | 30 | ||
31 | runDFST' :: forall state. Ord state => DFST state -> state -> String -> (String -> String) -> (state, (String -> String)) | 31 | runDFST' :: forall state. Ord state |
32 | => DFST state | ||
33 | -> state -- ^ Current state | ||
34 | -> String -- ^ Remaining input | ||
35 | -> (String -> String) -- ^ Output as difference list | ||
36 | -> (state, (String -> String)) -- ^ Next state, altered output | ||
32 | runDFST' _ st [] acc = (st, acc) | 37 | runDFST' _ st [] acc = (st, acc) |
33 | runDFST' dfst@DFST{..} st (c:cs) acc | 38 | runDFST' dfst@DFST{..} st (c:cs) acc |
34 | | Just (st', mc') <- stTransition !? (st, c) | 39 | | Just (st', mc') <- stTransition !? (st, c) |