Кажется, это происходит постоянно. Например:
(apply * (range 1 101))
дает мне ошибку
ArithmeticException integer overflow clojure.lang.Numbers.throwIntOverflow (Numbers.java:1374)
В Ruby 1.9.2 (концептуально) эквивалентный код,
(1..100).reduce(:*)
дает желаемый результат
93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
Очевидно, что эти два языка совершенно разные под капотом, но кажется, что они оба должны быть в состоянии справиться с этим вычислением без проблем. Я что-то здесь не так делаю? Или у меня неверное понимание?