(map min smallest y)
не имеет никакого смысла.Вместо того, чтобы вычислять новое наименьшее число, вы возвращаете ленивую последовательность [(min smallest) (min y)]
.В конце концов, миллионы этих ленивых карт накапливаются друг на друге, и вы понимаете их все сразу.Это легко исправить, поскольку вы не хотите ничего начинать с карты!
Я немного удивлен, что вы говорите, что это "работает" для небольших последовательностей.Я могу видеть, что это не взрывает стек (конечно), но я не вижу, как это могло когда-либо вычислить правильный ответ.Во всяком случае, мое решение будет
(defn min-max-by-columns [[x & xs]]
(reduce (fn [[smallest largest] x]
[(min smallest x) (max largest x)])
[x x]
xs))