X-Git-Url: https://git.stderr.nl/gitweb?a=blobdiff_plain;f=Sim.hs;fp=Sim.hs;h=3be038d3b11d8bfef33de0dde4be1fdc5927aa22;hb=a4852bd912875420e1c99cb135531a7e1df30e16;hp=771896ffc2e8280470cf8ac741c0c5f099b3ee4b;hpb=dcf9dd6d86a5f256c1129146a977620ab6d8d466;p=matthijs%2Fmaster-project%2Fc%CE%BBash.git diff --git a/Sim.hs b/Sim.hs index 771896f..3be038d 100644 --- a/Sim.hs +++ b/Sim.hs @@ -12,23 +12,23 @@ simulate f input s = do output = run f input s -- A circuit with input of type a, state of type s and output of type b -type Circuit a s b = a -> s -> (s, b) +type Circuit i s o = i -> s -> (s, o) -run :: Circuit a s b -> [a] -> s -> [(a, b, s)] +run :: Circuit i s o -> [i] -> s -> [(i, o, s)] run f (i:input) s = (i, o, s'): (run f input s') where (s', o) = f i s run _ [] _ = [] -simulateIO :: (Read a, Show a, Show b, Show s) => Sim.Circuit a s b -> s -> IO() +simulateIO :: (Read i, Show i, Show o, Show s) => Sim.Circuit i s o -> s -> IO() simulateIO c s = do putStr "Initial State: " putStr $ show s putStr "\n\n" runIO c s -runIO :: (Read a, Show a, Show b, Show s) => Sim.Circuit a s b -> s -> IO() +runIO :: (Read i, Show i, Show o, Show s) => Sim.Circuit i s o -> s -> IO() runIO f s = do putStr "\nInput? " line <- getLine