【发布时间】:2020-02-11 23:59:24
【问题描述】:
这是 Racket 中 for 循环的示例:
(define List '(1 2 3))
(for ((I List))
(displayln I)
)
在 Scheme/Racket 中,包裹某事物的单括号对用于评估。但是上面的for 循环形式将第一个参数作为((I List)) 包裹在双括号对中。
好像是这样的:
- 首先,评估
(I List) - 然后,评估
I List
在双括号中,这种评估的实际理论意义是什么?
【问题讨论】:
-
了解一下,虽然您会经常看到 Scheme 中的绑定列表作为双括号,但 Racket 允许括号像括号一样,并且一些(可以说是大多数)Racket 用户更有可能使用括号编写绑定。也就是说,写
(for ([x '(1 2 3)]) (displayln x))而不是(for ((x '(1 2 3))) (displayln x))。cond、syntax-case等也一样。 -
[ ]在一般编程中是一个列表,所以我现在更喜欢使用for [(i List)] Form代替:)
标签: for-loop scheme lisp racket evaluation