Mir*_*lov 3 list-comprehension lexical-scope racket
在Haskell中,在列表理解中,我可以在每次迭代时将表达式绑定到变量:
[a | x <- xs, let a = x ^ 2, a >= 25]
Run Code Online (Sandbox Code Playgroud)
如何在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))))
Run Code Online (Sandbox Code Playgroud)
我想绑定(* i j)一个变量,并在函数的任何地方将表达式替换为它.
使用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))))
Run Code Online (Sandbox Code Playgroud)