Question

Quelles sont les bibliothèques OCaml disponibles pour la gestion par liste des listes paresseuses? Je cherche quelque chose dans ce sens:

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'intégration avec le type Stream et le sucre syntaxique pour le retour en arrière Les analyseurs Camlp4 serait bien.

Était-ce utile?

La solution

Les

batteries Ocaml ont un module de liste paresseuse , consultez la fonction to_stream . Pour ce qui est du retour arrière, vous pouvez regarder dans les analyseurs de flux de camlp4 maintenant que vous avez un fichier Stream.t.

Autres conseils

Il existe également un module de liste paresseux appelé Cf_seq dans mon Environnement d'application réseau OCaml Fondation de base. En fait, j'ai écrit tout un tas de structures de données fonctionnelles. Tout est disponible sous une licence BSD à 2 clauses. Profitez.

Mettre à jour : le code a été renommé " Oni " et il est maintenant hébergé chez BitBucket. Vous pouvez également utiliser le package GODI .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top