Learn expandExpr how to handle Let expressions.
authorMatthijs Kooijman <m.kooijman@student.utwente.nl>
Thu, 29 Jan 2009 16:43:32 +0000 (17:43 +0100)
committerMatthijs Kooijman <m.kooijman@student.utwente.nl>
Thu, 29 Jan 2009 16:43:32 +0000 (17:43 +0100)
Translator.hs

index 6fa043c5e61039a6c52dd82f7920909b3f65c33d..338d16f4b92fccfd0815b08e02ea1b6e8f6017b8 100644 (file)
@@ -227,6 +227,16 @@ expandExpr binds (Var id) =
       (error $ "Argument " ++ getOccString id ++ "is unknown")
       (lookup id binds)
 
+expandExpr binds l@(Let (NonRec b bexpr) expr) = do
+  (signal_decls, statements, arg_signals, res_signals) <- expandExpr binds bexpr
+  let binds' = (b, res_signals) : binds
+  (signal_decls', statements', arg_signals', res_signals') <- expandExpr binds' expr
+  return (
+    signal_decls ++ signal_decls',
+    statements ++ statements',
+    arg_signals',
+    res_signals')
+
 expandExpr binds app@(App _ _) = do
   let ((Var f), args) = collectArgs app
   if isTupleConstructor f