Ваша ошибка здесь:
([coll] (recursive-reverse [coll nil]))
Вы звоните recursive-reverse
с одним аргументом (вектором).Это вызывает тот же список аргументов функции, так что он делает это рекурсивно и каждый раз создает кадр стека.
Измените его на:
([coll] (recursive-reverse coll nil))
, и вы должны быть правы.
(Кроме того, отдельная проблема, но я бы обычно делал проверку для nil
вместо '()
и с использованием next
вместо rest
. Я не думаю, что это имеет какое-то реальное преимущество с точки зрения производительностиили что-нибудь, но мне кажется, что чище.)