- "n" -> go bps xs
- ('b':' ':exprStr) -> let expr = read exprStr in go (expr:bps) list
- "c" ->
- let seek [] = return ()
- seek (EffectStatement s env:xs) =
+ "n" -> mapM_ putStrLn output >> go xs (e:done) bps
+ "p" -> case done of
+ [] -> return ()
+ (y:ys) -> go (y:list) ys bps
+ ('b':' ':exprStr) -> let expr = read exprStr in go list done (expr:bps)
+ "c" -> continue xs (e:done) bps
+ "?" -> printHelp >> go list done bps
+ _ -> do
+ putStrLn $ "I don't know what '" ++ c ++ "' means. Enter ? for help"
+ go list done bps
+
+ -- | Continues until the first breakpoint is hit
+ continue :: [Effect] -> [Effect] -> [Breakpoint] -> IO ()
+ continue [] _ _ = return ()
+ continue (e@(Effect _ env output):xs) done bps = do
+ mapM_ putStrLn output