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)
|
// if-else (SPECIAL FORM)
|
||||||
MlValue if_then_else(std::vector<MlValue> args, MlEnvironment &env) {
|
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);
|
throw MlError(MlValue("if", if_then_else), env, args.size() > 3 ? TOO_MANY_ARGS : TOO_FEW_ARGS);
|
||||||
|
|
||||||
if (args[0].eval(env).as_bool())
|
if (args[0].eval(env).as_bool())
|
||||||
return args[1].eval(env);
|
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)
|
// Define a variable with a value (SPECIAL FORM)
|
||||||
|
|
@ -1423,6 +1426,7 @@ namespace builtin {
|
||||||
|
|
||||||
if (args.size() == 0)
|
if (args.size() == 0)
|
||||||
throw MlError(MlValue("push", push), env, TOO_FEW_ARGS);
|
throw MlError(MlValue("push", push), env, TOO_FEW_ARGS);
|
||||||
|
|
||||||
for (size_t i = 1; i < args.size(); i++)
|
for (size_t i = 1; i < args.size(); i++)
|
||||||
args[0].push(args[i]);
|
args[0].push(args[i]);
|
||||||
return args[0];
|
return args[0];
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue