diff --git a/a8/lisp.cc b/a8/lisp.cc index e306d41..441e15e 100644 --- a/a8/lisp.cc +++ b/a8/lisp.cc @@ -143,9 +143,17 @@ namespace a8 [] (const List& params) -> std::shared_ptr { double result = 0; - for (auto param : *params) { - Atom&& atom = std::any_cast(param->value); - result /= atom.val; + if (params->size() > 0) { + result = std::any_cast(params->at(0)->value).val; + if (params->size() > 1) { + for (int i = 1; i < params->size(); ++i) { + auto& param = params->at(i); + Atom&& atom = std::any_cast(param->value); + result /= atom.val; + } + } else { + result = 0; + } } return std::make_shared(Atom(result)); });