Какие библиотеки OCaml существуют для ленивой обработки списка?
-
05-07-2019 - |
Вопрос
Какие библиотеки OCaml предоставляют ленивую обработку списка? Я ищу что-то вроде этого:
type 'a lazy_list = (*'*)
| Nil
| Cons of 'a * 'a lazy_list lazy_t
let from f =
let rec gen n =
lazy
(
match f n with
| Some x ->
Cons (x, gen (n + 1))
| None ->
Nil
)
in
gen 0
Интеграция с типом Stream
и синтаксическим сахаром для обратного отслеживания анализаторов Camlp4 была бы хорошей.
Решение
Батареи Ocaml имеет модуль отложенного списка , проверьте функцию to_stream
. Что касается возврата, вы можете посмотреть потоковые парсеры camlp4 теперь, когда у вас есть Stream.t.
Не связан с StackOverflow