allow if without else
This commit is contained in:
parent
e84d63c138
commit
c9c58f9030
8
ml.cpp
8
ml.cpp
|
|
@ -887,12 +887,15 @@ namespace builtin {
|
|||
|
||||
// if-else (SPECIAL FORM)
|
||||
MlValue if_then_else(std::vector<MlValue> 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];
|
||||
|
|
|
|||
Loading…
Reference in New Issue