這是代碼。Haskell - 過濾器和頭部如何結合在一起工作?
largestDivisible :: (Integral a) => a
largestDivisible = head (filter p [100000,99999..])
where p x = x `mod` 3829 == 0
我有點困惑。這種情況下p是多少?此外,我不明白在這個特定的例子中的表達式,因爲我們得到了兩個表達式,左邊是p和x,我們有一個對齊,實際上它是一個布爾值。
我將不勝感激,如果有人能解釋我上面的代碼。
所以,這意味着對於第一種情況: p 100000 然後,它計算第如果100000可以被3829整除,它將返回真。對嗎? – tumbler 2014-10-18 00:32:04
是的,但是你需要考慮在這種情況下'過濾器'的作用。一旦你理解了當'p'返回'True'時'filter'做了什麼,'p'返回'False'時''過濾器'做了什麼,你可以知道'head'的作用。 – 2014-10-18 10:21:07
@SassaNF:過濾器的類型是(a - > Boolean) - > [a] - > [a]。在那種情況下,它返回100000的錯誤。所以第一個參數是錯誤的,這就是爲什麼100000沒有放在新構建的列表中。是這樣的嗎? – tumbler 2014-10-19 10:48:37