Библиотека итераторов Iter
Iter — чистая и эффективная реализация итераторов. Это самая потрясающая реализация итераторов, которую вы только можете представить. Это не чисто функциональные итераторы, но они не менее великолепны.
Вся абстракция строиться на простейшей функции ('a -> unit) -> unit
. Всё! Больше вам ничего не надо.
Пример простого счётчика
ocaml
let counter top k =
for i = 0 to top do
k i
done
(* counter : int -> int Iter.t *)
Теперь мы можем делать с ним всё, что захочется:
ocaml
let () = counter 10 |> Iter.map string_of_int |> Iter.iter print_endline
Перфоманс
При включенных оптимизациях компилятор развернёт всю цепочку итератора в один сплошной цикл, если такой имеется. То есть по производительности это будет тоже самое, если бы вы писали циклы в ручную. Так как тут нет ничего кроме функций, даже замыканий! Максимально примитивный код и это гениально.
Смотрите также
- Continuation-based Iterators in OCaml про чисто функциональные итераторы;