From ae1328b9d0650254a02556466961749b528a6d7a Mon Sep 17 00:00:00 2001 From: Matthijs Kooijman Date: Thu, 29 Jan 2009 17:43:32 +0100 Subject: [PATCH] Learn expandExpr how to handle Let expressions. --- Translator.hs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Translator.hs b/Translator.hs index 6fa043c..338d16f 100644 --- a/Translator.hs +++ b/Translator.hs @@ -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 -- 2.30.2