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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top