Quali librerie OCaml sono disponibili per la gestione degli elenchi pigri?
-
05-07-2019 - |
Domanda
Quali librerie OCaml sono là fuori che forniscono la gestione dell'elenco pigro? Sto cercando qualcosa in questo senso:
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
L'integrazione con il tipo Stream
e lo zucchero sintattico per backtracking i parser Camlp4 sarebbe piacevole.
Soluzione
Ocaml Batteries ha un modulo elenco pigro , controlla la funzione to_stream
. Per quanto riguarda il backtracking, puoi esaminare i parser di stream di camlp4 ora che hai un Stream.t.
Altri suggerimenti
Inoltre, c'è un modulo dell'elenco pigro chiamato Cf_seq
nel mio OCaml Network Application Environment Core Foundation. In effetti, ho scritto un intero passaggio di strutture di dati funzionali. È tutto disponibile con una licenza BSD a 2 clausole. Godetevi.
Aggiorna : il codice è stato rinominato " Oni " ed è ora ospitato su BitBucket. Puoi anche usare il GODI per questo.