3

在 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)到一个变量并将表达式替换为函数中的任何地方。

4

1 回答 1

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))))
于 2013-02-20T12:32:37.790 回答