itertools.count
Racket中是否有 Python 的类似物?我想创建一个无限的均匀间隔数字流。in-naturals
类似于我想要的,但不提供步骤。我不想重新发明轮子,但如果没有等效的功能,如何写一个?(我想,应该使用发电机)
问问题
709 次
2 回答
2
自己制作函数可以在一行中完成:
(define (stream-from n s) (stream-cons n (stream-from (+ n s) s)))
为了测试它,你这里是一个打印 100000 个数字的例子:
#lang racket
(require racket/stream)
(define (stream-from n s) (stream-cons n (stream-from (+ n s) s)))
(define (stream-while s p)
(let ([fst (stream-first s)])
(if (p fst) (stream-cons fst (stream-while (stream-rest s) p)) empty-stream)))
(define test (stream-while (stream-from 0 1) (λ (x) (< x 100000))))
(stream-for-each println test)
于 2017-01-05T13:34:14.067 回答