球拍:“范围”和“范围内”的区别
Racket: Difference between `range` and `in-range`
在 Racket:
中的 for 循环中生成要迭代的数字序列有两种可能性
(for ([i (range 1 5)])
(display i))
和
(for ([i (in-range 1 5)])
(display i))
range
和 in-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
只是 transformed 到 in-range
。
请注意,虽然 range
和 in-range
在 for
子句中出现时在功能上是等价的,但它们通常在功能上并不等价。
> (range 5)
'(0 1 2 3 4)
> (in-range 5)
#<stream>
在 Racket:
中的 for 循环中生成要迭代的数字序列有两种可能性(for ([i (range 1 5)])
(display i))
和
(for ([i (in-range 1 5)])
(display i))
range
和 in-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
只是 transformed 到 in-range
。
请注意,虽然 range
和 in-range
在 for
子句中出现时在功能上是等价的,但它们通常在功能上并不等价。
> (range 5)
'(0 1 2 3 4)
> (in-range 5)
#<stream>