在Haskell中,在列表推导中,我可以在每次迭代时将表达式绑定到变量:
[a | x <- xs, let a = x ^ 2, a >= 25]
如何在Racket的for
理解中绑定词法变量?
目前我有这段代码:
(define (euler4)
(apply max
(for*/list ([i (in-range 100 1000)]
[j (in-range i 1000)]
#:when (string=? (number->string (* i j))
(string-reverse (number->string (* i j)))))
(* i j))))
我想将(* i j)
绑定到一个变量,并在函数的任何地方将表达式替换为它。
答案 0 :(得分:9)
使用in-value
表单创建一个绑定到单个值的循环变量。
在你的例子中:
(define (euler4)
(apply max
(for*/list ([i (in-range 100 1000)]
[j (in-range i 1000)]
[ij (in-value (* i j))]
#:when (string=? (number->string ij)
(string-reverse (number->string ij))))
(* i j))))