Итак, я использовал некоторые тесты в Ruby 2.4.0 и понял, что
(1...1000000000000000000000000000000).sum
рассчитывается немедленно, тогда как
(1...1000000000000000000000000000000).inject(:+)
занимает так много времени, что я просто прервал операцию. У меня создалось впечатление, что Range#sum был псевдонимом для Range#inject(:+), но похоже, что это неверно. Итак, как работает sum и почему это происходит намного быстрее, чем inject(:+)?
  N.B. Документация для Enumerable#sum (которая реализована Range) ничего не говорит о ленивой оценке или о том, что происходит по этим строкам.
