2013-02-20 74 views
3

在Haskell詞彙範圍,在列表解析裏,我可以綁定表達式每次迭代變量:球拍:用於內部

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

如何綁定詞法變量在球拍的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

雖然問題和答案是有效的,我很鬱悶,你基本上張貼的答案,項目歐拉#4,我碰到這個試圖解決它在球拍絆倒了。歐拉特別要求你不要這樣做。我添加了項目歐拉標籤 – 2014-08-17 13:23:29

回答

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)))) 
+1

好!不知道那個。 – 2013-02-20 18:38:28