3

Haskell では、リスト内包表記内で、反復ごとに式を変数にバインドできます。

[a | x <- xs, let a = x ^ 2, a >= 25]

forRacket の理解でレキシカル変数をバインドするにはどうすればよいですか?

現在、私はこのコードを持っています:

(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 に答える