Ocaml: Lazy Listen

8

Wie kann ich eine faule Liste erstellen, die eine Folge von Doppelnummern darstellt? Beispiel:

%Vor%     
Nick Heiner 27.10.2009, 16:17
quelle

4 Antworten

13

Streams verwenden:

%Vor%

oder

%Vor%

Verwenden Sie einen benutzerdefinierten lazy_list -Typ:

%Vor%     
ephemient 27.10.2009 17:12
quelle
9

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?

    
chollida 27.10.2009 17:08
quelle
3

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.

    
james woodyatt 27.10.2009 21:04
quelle
1

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):

    %Vor%
  • 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

    verwenden %Vor%

    Wenn Sie es tun

    %Vor%

    Sie erhalten folgende Ausgabe:

    %Vor%
jdb 27.10.2009 18:06
quelle

Tags und Links