From c9c58f90308058b5d1b4ead6c881a9e70e69d40f Mon Sep 17 00:00:00 2001 From: VaclavT Date: Mon, 22 Feb 2021 01:29:54 +0100 Subject: [PATCH] allow if without else --- ml.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ml.cpp b/ml.cpp index 7c912ff..3f9229d 100644 --- a/ml.cpp +++ b/ml.cpp @@ -887,12 +887,15 @@ namespace builtin { // if-else (SPECIAL FORM) MlValue if_then_else(std::vector args, MlEnvironment &env) { - if (args.size() != 3) + if (args.size() != 2 && args.size() != 3) throw MlError(MlValue("if", if_then_else), env, args.size() > 3 ? TOO_MANY_ARGS : TOO_FEW_ARGS); if (args[0].eval(env).as_bool()) return args[1].eval(env); - else return args[2].eval(env); + else if (args.size() == 3) + return args[2].eval(env); + + return MlValue(0); } // Define a variable with a value (SPECIAL FORM) @@ -1423,6 +1426,7 @@ namespace builtin { if (args.size() == 0) throw MlError(MlValue("push", push), env, TOO_FEW_ARGS); + for (size_t i = 1; i < args.size(); i++) args[0].push(args[i]); return args[0];