aboutsummaryrefslogtreecommitdiff
path: root/frontend/syntax.icl
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/syntax.icl')
-rw-r--r--frontend/syntax.icl17
1 files changed, 14 insertions, 3 deletions
diff --git a/frontend/syntax.icl b/frontend/syntax.icl
index 086c7b3..ba2056d 100644
--- a/frontend/syntax.icl
+++ b/frontend/syntax.icl
@@ -995,10 +995,17 @@ cIsNotStrict :== False
}
:: Let =
- { let_strict_binds :: !Env Expression FreeVar
- , let_lazy_binds :: !Env Expression FreeVar
+ { let_strict_binds :: ![LetBind]
+ , let_lazy_binds :: ![LetBind]
, let_expr :: !Expression
, let_info_ptr :: !ExprInfoPtr
+ , let_expr_position :: !Position
+ }
+
+:: LetBind =
+ { lb_dst :: !FreeVar
+ , lb_src :: !Expression
+ , lb_position :: !Position
}
:: DynamicExpr =
@@ -1083,7 +1090,6 @@ cIsNotStrict :== False
, ip_file :: !FileName
}
-
:: FileName :== String
:: FunctName :== String
@@ -1417,6 +1423,11 @@ where
(<<<) file expr = abort ("<<< (Expression) [line 1290]" )//<<- expr)
+instance <<< LetBind
+where
+ (<<<) file {lb_dst, lb_src}
+ = file <<< lb_dst <<< " = " <<< lb_src <<< "\n"
+
instance <<< TypeCase
where
(<<<) file {type_case_dynamic,type_case_patterns,type_case_default}