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

1. Да, я знаю про splitAt. Ну выглядело бы это как

| otherwise = let t = fst $ splitAt i xs
ts = snd $ splitAt i xs
in t:ts

Проблема в том, что take и drop -- это два вычисления, а splitAt -- одно? Ну таки http://www.haskell.org/ghc/docs/latest/html/libraries/base/src/GHC-List.html#splitAt
splitAt n xs = (take n xs, drop n xs)

2. Э-э-э, в смысле
splitEvery n xs = (take n xs):(splitEvery n (drop n xs))
превращается
splitEvery n xs = (take n xs):(take n (drop n xs)):(splitEvery n (drop n (drop n xs)))
и так далее?

3. Ну у нас же не Erlang, централизация. То есть, на самом деле, я не знаю, можно попробовать и так тоже.
Генерация же в жизни превратится в извлечение откуда-то, а абстрактное извлечение проще представить как однопоточный процесс. Неправильное мышление, да.