簡體   English   中英

在列表中查找元素並返回字符串 - haskell

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM