球拍:“范围”和“范围内”的区别

Racket: Difference between `range` and `in-range`

Racket:

中的 for 循环中生成要迭代的数字序列有两种可能性
(for ([i (range 1 5)])
    (display i))

(for ([i (in-range 1 5)])
    (display i))

rangein-range 都有效并且似乎是等效的,但是 https://docs.racket-lang.org/reference/sequences.html 说:

"An in-range application can provide better performance for number iteration when it appears directly in a for clause."

range 相比,这是否也适用?

是的,range 在语法上直接出现在 for 子句中时,其性能与 in-range 相同。事实上,在那种情况下,range 只是 transformedin-range

请注意,虽然 rangein-rangefor 子句中出现时在功能上是等价的,但它们通常在功能上并不等价。

> (range 5)
'(0 1 2 3 4)
> (in-range 5)
#<stream>