-propagateState' ::
- [(SignalId, SignalId)]
- -- ^ TODO
- -> SigDef -- ^ The SigDef to process.
- -> ([SignalId], SigDef)
- -- ^ Any signal ids that should become substates,
- -- and the resulting application.
-
-propagateState' states def =
- if (is_FApp def) then
- (our_old ++ our_new, def {appFunc = hsfunc'})
- else
- ([], def)
- where
- hsfunc = appFunc def
- args = appArgs def
- res = appRes def
- our_states = filter our_state states
- -- A state signal belongs in this function if the old state is
- -- passed in, and the new state returned
- our_state (old, new) =
- any (old `Foldable.elem`) args
- && new `Foldable.elem` res
- (our_old, our_new) = unzip our_states
- -- Mark the result
- zipped_res = zipValueMaps res (hsFuncRes hsfunc)
- res' = fmap (mark_state (zip our_new [0..])) zipped_res
- -- Mark the args
- zipped_args = zipWith zipValueMaps args (hsFuncArgs hsfunc)
- args' = map (fmap (mark_state (zip our_old [0..]))) zipped_args
- hsfunc' = hsfunc {hsFuncArgs = args', hsFuncRes = res'}
-
- mark_state :: [(SignalId, StateId)] -> (SignalId, HsValueUse) -> HsValueUse
- mark_state states (id, use) =
- case lookup id states of
- Nothing -> use
- Just state_id -> State state_id
+-- propagateState' ::
+-- [(SignalId, SignalId)]
+-- -- ^ TODO
+-- -> SigDef -- ^ The SigDef to process.
+-- -> ([SignalId], SigDef)
+-- -- ^ Any signal ids that should become substates,
+-- -- and the resulting application.
+--
+-- propagateState' states def =
+-- if (is_FApp def) then
+-- (our_old ++ our_new, def {appFunc = hsfunc'})
+-- else
+-- ([], def)
+-- where
+-- hsfunc = appFunc def
+-- args = appArgs def
+-- res = appRes def
+-- our_states = filter our_state states
+-- -- A state signal belongs in this function if the old state is
+-- -- passed in, and the new state returned
+-- our_state (old, new) =
+-- any (old `Foldable.elem`) args
+-- && new `Foldable.elem` res
+-- (our_old, our_new) = unzip our_states
+-- -- Mark the result
+-- zipped_res = zipValueMaps res (hsFuncRes hsfunc)
+-- res' = fmap (mark_state (zip our_new [0..])) zipped_res
+-- -- Mark the args
+-- zipped_args = zipWith zipValueMaps args (hsFuncArgs hsfunc)
+-- args' = map (fmap (mark_state (zip our_old [0..]))) zipped_args
+-- hsfunc' = hsfunc {hsFuncArgs = args', hsFuncRes = res'}
+--
+-- mark_state :: [(SignalId, StateId)] -> (SignalId, HsValueUse) -> HsValueUse
+-- mark_state states (id, use) =
+-- case lookup id states of
+-- Nothing -> use
+-- Just state_id -> State state_id