diff --git a/impls/cc/core.cc b/impls/cc/core.cc index c5dd2dde..235dcfe7 100644 --- a/impls/cc/core.cc +++ b/impls/cc/core.cc @@ -286,14 +286,11 @@ std::shared_ptr apply(std::vector> args) { std::vector> list; - for (unsigned i = 1; i < args.size(); ++i) - { - if (args[i]->type() == MalType::Type::List) - for (auto item : static_cast(*args[i])) - list.push_back(item); - else - list.push_back(args[i]); - } + for (unsigned i = 1; i < args.size() - 1; ++i) + list.push_back(args[i]); + + for (auto item : static_cast(*args[args.size() - 1])) + list.push_back(item); auto &func = static_cast(*args[0]); return func(list);