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}}==