Какие библиотеки OCaml существуют для ленивой обработки списка?

StackOverflow https://stackoverflow.com/questions/1403641

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top