¿Qué bibliotecas OCaml existen para el manejo de listas perezosas?
-
05-07-2019 - |
Pregunta
¿Qué bibliotecas de OCaml hay por ahí que proporcionan un manejo de listas lento? Estoy buscando algo en este sentido:
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
La integración con el tipo Stream
y el azúcar sintáctica para backtracking los analizadores de Camlp4 serían agradables.
Solución
Ocaml Batteries tiene una módulo de lista diferida , revise la función to_stream
. En cuanto al retroceso, puedes mirar los analizadores de flujo de camlp4 ahora que tienes un Stream.t.
Otros consejos
También, hay un módulo de lista perezoso llamado Cf_seq
en mi OCaml Network Application Environment Core Foundation. De hecho, escribí toda una serie de estructuras de datos funcionales. Todo está disponible bajo una licencia BSD de 2 cláusulas. Disfrutar.
Actualización : el nombre del código se ha cambiado " Oni " y ahora está alojado en BitBucket. También puede usar el paquete GODI para ello.