SirFrancisDrake/hash-benchmarks — comment on commit 94f2e7f2fcae569f7f57ace6192c78fb1f8bd633
File: RedisTest.hs line 21
By jorpic:

```haskell
splitEvery 0 _ = []
splitEvery _ [] = []
splitEvery i xs = a : splitEvery i ys
where
(y,ys) = splitAt i xs
```

По ссылке почитай чуть дальше (во второй ветке #ifdef), там интереснее.
Соответственно, как только в рекурсивном вызове потребуется ys сравнить с [], сразу же придётся вычислить и y.
А в варианте с let (y,ys) = (take i xs, drop i xs) ничего не мешает take i xs оставаться невычисленным.

По последнему пункту согласен. Однако. интересно бы посмотреть на олеговские iteratees и раздавать данные по частям через Concurrent.Chan.