strömt im Schläger

8

Kann mir jemand helfen, besser zu verstehen, wie man einen Stream schreibt?

Ich verstehe, dass ein Stream eine unendliche Folge von Werten ist und die Art, wie ich sie gelernt habe, ist ein Thunk, der, wenn er aufgerufen wird, ein Paar von (1) dem ersten Element in der Sequenz und (2) a erzeugt Thunk, der den Strom für die Elemente der zweiten bis unendlich darstellt

Zum Beispiel:

%Vor%

Ich verstehe hier, dass es nur eine Zweierpotenz erzeugt und auf diese zugreift. Zum Beispiel würde der Aufruf von (car (powers-of-two)) zu 2 führen und der Aufruf von (car ((cdr (powers-of-two)))) würde zu 4

führen

Jetzt versuche ich einen Stream namens red-blue zu schreiben, der zwischen den Strings red und blue wechselt, aber ich bin ein wenig verwirrt darüber, wie ich ihn konstruieren soll

    
kfem 24.10.2012, 04:51
quelle

4 Antworten

6

Für ein allgemeines Verständnis von Streams in Scheme empfehle ich Abschnitt §3.5 Streams im SICP-Buch. Es wird Ihnen die grundlegenden Konzepte zur Lösung streambezogener Probleme beibringen, wie zum Beispiel den in der Frage.

In Bezug auf das Problem in der Frage, hier ist die allgemeine Idee, es zu lösen:

  • Erstellen Sie zwei unendliche Streams, wobei einer nur die Zeichenfolge "red" und die andere "blue" erzeugt.
  • Kombinieren Sie beide Ströme, indem Sie ein Element von einem Element und dann ein Element vom anderen Element (alternierend) nehmen. Diese Prozedur heißt interleave in SICP
Óscar López 24.10.2012, 05:10
quelle
14

Es sieht so aus, als ob Sie gefragt haben, wie Sie Ihre eigenen benutzerdefinierten Streams mit Thunks erstellen können, die andere bereits beantwortet haben. Nur für den Fall, dass Racket eine Stream-Bibliothek eingebaut hat und die meisten Racketeers diese für Streams verwenden würden.

Hier ist ein Beispiel:

%Vor%     
Asumu Takikawa 24.10.2012 15:13
quelle
6

Ich schrieb SRFI-41 , das Streams beschreibt, eine Implementierung bietet und viele Beispiele gibt. Die Streams dort unterscheiden sich von denen in SICP, und sind in gewisser Weise "besser" in der SRFI erklärt.

    
user448810 24.10.2012 12:41
quelle
1

Ich bin ein Anfänger, aber die folgenden Lösungen scheinen auch zu funktionieren:

%Vor%     
Komal Waseem 23.02.2013 08:46
quelle

Tags und Links