module Adders where
import Bits
+import qualified Sim
import Language.Haskell.Syntax
-main = do show_add exp_adder; show_add rec_adder;
+mainIO f = Sim.simulateIO (Sim.stateless f) ()
+
+-- This function is from Sim.hs, but we redefine it here so it can get inlined
+-- by default.
+stateless f = \i s -> (s, f i)
show_add f = do print ("Sum: " ++ (displaysigs s)); print ("Carry: " ++ (displaysig c))
where
(s, c2) = half_adder(s1, cin)
c = c1 `hwor` c2
+sfull_adder = stateless full_adder
+
-- Four bit adder
-- Explicit version
-- [a] -> [b] -> ([s], cout)