flattenFunction _ (Rec _) = error "Recursive binders not supported"
flattenFunction hsfunc bind@(NonRec var expr) =
- FlatFunction args res apps conds sigs''''
+ FlatFunction args res defs sigs''''
where
- init_state = ([], [], [], 0)
+ init_state = ([], [], 0)
(fres, end_state) = State.runState (flattenExpr [] expr) init_state
- (apps, conds, sigs, _) = end_state
+ (defs, sigs, _) = end_state
(args, res) = fres
arg_ports = concat (map Foldable.toList args)
res_ports = Foldable.toList res
appArgs = arg_ress,
appRes = res
}
- addApp app
+ addDef app
return ([], res)
-- | Check a flattened expression to see if it is valid to use as a
-- function argument. The first argument is the original expression for
filterState ::
SignalId -- | The signal id to look at
-> HsValueUse -- | How is this signal used?
- -> Maybe (Int, SignalId ) -- | The state num and signal id, if this
+ -> Maybe (StateId, SignalId ) -- | The state num and signal id, if this
-- signal was used as state
filterState id (State num) =
stateList ::
HsUseMap
-> (SignalMap)
- -> [(Int, SignalId)]
+ -> [(StateId, SignalId)]
stateList uses signals =
Maybe.catMaybes $ Foldable.toList $ zipValueMapsWith filterState signals uses
getOwnStates ::
HsFunction -- | The function to look at
-> FlatFunction -- | The function to look at
- -> [(Int, SignalInfo, SignalInfo)]
+ -> [(StateId, SignalInfo, SignalInfo)]
-- | The state signals. The first is the state number, the second the
-- signal to assign the current state to, the last is the signal
-- that holds the new state.