Quelles bibliothèques OCaml existe-t-il pour la gestion des listes paresseuses?
-
05-07-2019 - |
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.
La solution
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 .