aboutsummaryrefslogtreecommitdiff
path: root/snug-clean
diff options
context:
space:
mode:
Diffstat (limited to 'snug-clean')
-rw-r--r--snug-clean/src/Snug/Compile.icl4
1 files changed, 2 insertions, 2 deletions
diff --git a/snug-clean/src/Snug/Compile.icl b/snug-clean/src/Snug/Compile.icl
index 50119f3..757b9c3 100644
--- a/snug-clean/src/Snug/Compile.icl
+++ b/snug-clean/src/Snug/Compile.icl
@@ -141,14 +141,14 @@ simulator ns globals locals expr=:(ExpApp _ _) =
case lookupFunction ns id globals of
?None -> abort ("unknown symbol: " +++ id +++ "\n") // TODO pass error up
?Just info | info.arity == length args ->
- mapM_ (simulator ns globals locals) args >>|
+ mapM_ (simulator ns globals locals) (reverse args) >>|
buildThunk (functionLabel ns NodeEntry id) info.arity
_ -> abort ("arity mismatch in application\n") // TODO implement
Constructor id ->
case lookupConstructor ns id globals of
?None -> abort ("unknown constructor: " +++ id +++ "\n") // TODO pass error up
?Just (ConstructorDef _ arg_types) | length arg_types == length args ->
- mapM_ (simulator ns globals locals) args >>|
+ mapM_ (simulator ns globals locals) (reverse args) >>|
buildCons (constructorLabel ns id) (length args)
_ -> abort ("arity mismatch in application of " +++ id +++ "\n") // TODO implement
_ -> // TODO