Wie kann ich eine faule Liste erstellen, die eine Folge von Doppelnummern darstellt? Beispiel:
%Vor%Der großartige Blog-Enfranchised Mind hat einen tollen Artikel zu diesem Thema:
Sie können auch Ссылка Dies ist die Standardbibliothek für den Umgang damit. Diese Frage ist dieser Frage auch sehr ähnlich: Welche OCaml-Bibliotheken gibt es für die Handhabung von Fazilitäten?
Außerdem gibt es in meiner OCaml-Netzwerkanwendungsumgebung Core Foundation ein Modul für die faule Liste mit dem Namen Cf_seq
. Tatsächlich habe ich eine ganze Reihe funktionaler Datenstrukturen geschrieben. Es ist alles unter einer 2-Klausel-BSD-Lizenz verfügbar. Viel Spaß.
Update : Der Code wurde in " Oni " umbenannt und wird nun bei BitBucket gehostet. Sie können auch das GODI -Paket dafür verwenden.
Wenn Sie es von Hand machen wollen, würde ich sagen, dass Sie die wichtigsten Optionen haben:
Benutze einen benutzerdefinierten lazy_list
-Typ, wie er in ephemient steht (außer dass seine Lösung ein bisschen kaputt ist):
Verwenden Sie eine Art von Thunk (wie die Sache, die verwendet wird, um faule Bewertung in einer Sprache zu implementieren, die es nicht unterstützt). Sie definieren Ihre Liste als Funktion unit -> 'a
, die angibt, wie das nächste Element aus dem aktuellen Element abgerufen wird (dafür müssen keine Streams verwendet werden). Um beispielsweise die Liste aller natürlichen Ganzzahlen zu definieren, können Sie
Wenn Sie es tun
%Vor%Sie erhalten folgende Ausgabe:
%Vor%Tags und Links stream ocaml lazy-evaluation