2014-06-18 97 views
-1

我試圖篩選list of 2-tuples其中第一個元組值等於0的列表:過濾的元組

ghci> ys 
[(0,55),(1,100)] 

ghci> filter (\x -> x.fst == 0) ys 
<interactive>:71:27: 
    Couldn't match type `(Integer, Integer)' with `b0 -> c0' 
    Expected type: [b0 -> c0] 
     Actual type: [(Integer, Integer)] 
    In the second argument of `filter', namely `ys' 
    In the expression: filter (\ x -> x . fst == 0) ys 
    In an equation for `it': it = filter (\ x -> x . fst == 0) ys 

我想要的輸出:

[(1,100)]

我怎樣才能做到這一點?另外,編譯時錯誤是什麼意思?

回答

8

(.)是功能組成,你想要filter (\x -> fst x == 0) ys。 編輯:你其實想要filter (\x -> fst x /= 0) ys,因爲filter提供了一個值列表,滿足謂詞。

編譯時錯誤是抱怨,因爲編譯器推斷x必須是一個函數,因爲您使用fst編寫它,但ys不是函數列表。

+1

順便說一句,這還是不給OP的期望的輸出。 –

+0

哦,你說得對,我只是假設他們正在正確使用'filter'。我會解決它。 –