Czy ktoś może mi pomóc lepiej zrozumieć, jak napisać strumień?strumienie w rakietach
Rozumiem, że strumień jest nieskończoną sekwencją wartości i sposób, w jaki nauczyłem się ich programować, reprezentuje je jako thunk, który po wywołaniu tworzy parę (1) pierwszego elementu w sekwencji i (2) thunk, który reprezentuje strumień dla elementów używanych przez nieskończoności
na przykład:
(define powers-of-two
(letrec ([f (lambda (x) (cons x (lambda() (f (* x 2)))))])
(lambda() (f 2))))
rozumiem tu, że jest on po prostu wytwarzania potęgami dwójki, a dostęp do nich na przykład dzwoniąc (car (powers-of-two))
spowodowałoby w 2
i wywołanie (car ((cdr (powers-of-two))))
byłaby ponownie DOPROWADZIĆ 4
Teraz próbuję napisać strumień zwany red-blue
który zmienia się pomiędzy strunami red
i blue
ale jestem trochę mylić o tym, jak zbudować go
tak zrobiłeś to, gratulacje! Zapoznaj się z sekcją Scheme w http://c2.com/cgi/wiki?SieveOfEratosthenesInManyProgrammingLanguages, aby zobaczyć działający przykład strumieni w stylu SICP. Jest tam tylko jedna reguła makro, możesz ją stosować ręcznie przez cały czas. –