我在教自己的Haskell,雖然迄今爲止這是一個非常有啓發性的經驗,但我發現C語言家族很容易完成的一些事情仍然是一個謎。所以,這是我非常基本的問題。我想要一個函數來提取具有與給定值相等的特定字段的元組。到目前爲止,我有這樣的代碼訪問元組中的字段
withJob :: [(String, String, String)] -> String -> [String]
withJob [] _ = []
withJob ((_,_,x):xs) job
| job == x = x:(withJob xs job)
| otherwise = (withJob xs job)
users :: [(String, String, String)]
users = [("Jack", "22", "Programmer"), ("Mary", "21", "Designer"), ("John", "24", "Designer")]
當這樣調用users 'withJob' "Programmer"
它輸出["Programmer"]
但我想它想輸出[("Jack", "22", "Programmer")]
,但我不知道如何訪問的元組,而不是作業(x
)在job == x = x:(withJob xs job)
只是一個方面說明:你不會碰到這個你沒有混淆擔憂,並將所有內容都包含在一個函數中。這裏我們有兩個問題:1.過濾一個列表,給出一個謂詞,以及2.謂詞本身。 – Ingo