我有一个元组列表.例如:[("A",100,1),("B",101,2)].我需要以简单的方式显示它.例如:"your name is: A", "Your id is: 100".
如果有人能找到解决方案,那将是一个很大的帮助.提前致谢.
最简单的方法是创建一个适用于列表中某个元素的函数.所以你需要这样的东西:
showDetails :: (String, Int, Int) -> String
showDetails (name, uid, _) = "Your name is:" ++ name ++ " Your ID is: " ++ show uid
Run Code Online (Sandbox Code Playgroud)
然后,您将此函数应用于列表中的每个元素,这意味着您要使用映射函数:
map :: (a -> b) -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)
所以,如果你的名单被调用xs,你会想要这样的东西:
map showDetails xs
Run Code Online (Sandbox Code Playgroud)
这显然会给你一个类型的结果[String],所以你可能对这个unlines函数感兴趣:
unlines :: [String] -> String
Run Code Online (Sandbox Code Playgroud)
这只是一个字符串列表,并创建一个字符串,其中每个元素由一个新行分隔.
把这一切放在一起,然后,给你:
main :: IO ()
main = putStrLn . unlines . map showDetails $ [("A",100,1),("B",101,2)]
Run Code Online (Sandbox Code Playgroud)