[英]finding elements in a list and return strings - haskell
嗨,我想顯示第二天步行 0 分鍾的狗的名字
type Dogs = (String, Float, Float, [Int]) -- Dog,Age,Weight,Time walked daily
testData :: [Dogs]
testData = [("Morris", 5, 8, [0,0,5,8,8,0,0]),
("Tinks", 3, 10, [12,8,15,0,0,0,2]),
("Cash", 6, 11, [0,6,5,0,0,0,3]),
("Lou", 5, 17, [0,2,10,7,8,2,2]),
("Kobi", 10, 12, [0,0,8,3,6,7,5])
("Nala", 7, 8, [8,16,20,3,4,9,2])]
因此,output 將是 Morris 和 Kobi,因為它們在列表中的秒數為 0,但我不知道如何 go 關於這個,我對 Z64E88B02AD08079E342D827715AB4EC 很陌生。 我知道我應該使用!! 1
!! 1
從列表中獲取第二個元素,但我不知道如何對列表中的元組中的多個列表執行此操作,然后將 output 作為名稱的字符串。 任何幫助將不勝感激謝謝
首先,您可以創建一個單獨的 function 來確定您正在尋找的條件是否滿足:
isDay2Walked :: Dogs -> Bool
isDay2Walked (_, _, _, (_:x:_)) = x /= 0 -- pattern matching would be more elegant than (!! 1)
isDay2Walked _ = False -- return something if there is no information about the second day
然后,在列表的過濾器中使用此謂詞,並提取第一個元素 - 名稱:
getDogName :: Dogs -> String
getDogName (name, _, _, _) = name
getDogsNotWalkedOnDay2 :: [Dogs] -> [String]
getDogsNotWalkedOnDay2 = map getDogName . filter (not . isDay2Walked)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.