f1 >> f2 = f1 >>= \_ -> f2
(>>=) :: Stateful s1 r1 -> (r1 -> Stateful s2 r2) -> Stateful (s1, s2) r2
-f1 >>= f2 = \\(s1, s2) -> let (s1', r1) = f1 s1
+f1 >>= f2 = \(s1, s2) -> let (s1', r1) = f1 s1
(s2', r2) = f2 r1 s2
in ((s1', s2'), r2)
to make this set complete, or at least define the constraints on possible
recursion which guarantee it will work.
-TODO: Loop unrolling
+TODO: Reference Christian for loop unrolling
\stopitemize
\section{Multiple clock domains and asynchronicity}