-> FlattenState (SignalMap UnnamedSignal)
genSignals ty = do
- typeMapToUseMap tymap
+ typeMapToUseMap SigInternal tymap
where
-- First generate a map with the right structure containing the types
tymap = mkHsValueMap ty
typeMapToUseMap ::
- HsValueMap Type.Type
+ SigUse
+ -> HsValueMap Type.Type
-> FlattenState (SignalMap UnnamedSignal)
-typeMapToUseMap (Single ty) = do
- id <- genSignalId
+typeMapToUseMap use (Single ty) = do
+ id <- genSignalId use ty
return $ Single id
-typeMapToUseMap (Tuple tymaps) = do
- usemaps <- State.mapM typeMapToUseMap tymaps
+typeMapToUseMap use (Tuple tymaps) = do
+ usemaps <- State.mapM (typeMapToUseMap use) tymaps
return $ Tuple usemaps
-- | Flatten a haskell function
flattenFunction _ (Rec _) = error "Recursive binders not supported"
flattenFunction hsfunc bind@(NonRec var expr) =
- FlatFunction args res apps conds
+ FlatFunction args res apps conds sigs
where
- init_state = ([], [], 0)
+ init_state = ([], [], [], 0)
(fres, end_state) = State.runState (flattenExpr [] expr) init_state
(args, res) = fres
- (apps, conds, _) = end_state
+ (apps, conds, sigs, _) = end_state
flattenExpr ::
BindMap