Generator/Exponential: Difference between revisions
Content deleted Content added
m category |
Add Racket example |
||
Line 1,413:
'''Sample output'''
<pre>[529, 576, 625, 676, 784, 841, 900, 961, 1024, 1089]</pre>
=={{header|Racket}}==
Racket has (potentially infinite) sequences, which handle most use cases of generators. First-class generators are also available in a library.
<lang racket>
#lang racket
(require racket/generator)
;; a generator using Racket's sequences
(define (powers n)
(sequence-map (λ (x) (expt x n)) (in-naturals)))
(define squares (powers 2))
(define cubes (powers 3))
;; using explicit generators
(define (filter s1 s2)
(define g1 (sequence->generator s1))
(define g2 (sequence->generator s2))
(in-generator
(let loop ([n1 (g1)] [n2 (g2)])
(cond [(< n1 n2) (yield n1) (loop (g1) n2)]
[(> n1 n2) (loop n1 (g2))]
[else (loop (g1) (g2))]))))
(define filtered (filter squares cubes))
(for/list ([x (sequence-tail filtered 20)]
[_ 10])
x)
</lang>
=={{header|REXX}}==
|