Skip to content

Библиотека итераторов 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

Перфоманс

При включенных оптимизациях компилятор развернёт всю цепочку итератора в один сплошной цикл, если такой имеется. То есть по производительности это будет тоже самое, если бы вы писали циклы в ручную. Так как тут нет ничего кроме функций, даже замыканий! Максимально примитивный код и это гениально.


Смотрите также