在Haskell中打印元组内的值

Roy*_*Roy 1 haskell

我有一个元组列表.例如:[("A",100,1),("B",101,2)].我需要以简单的方式显示它.例如:"your name is: A", "Your id is: 100".

如果有人能找到解决方案,那将是一个很大的帮助.提前致谢.

Nic*_* Wu 6

最简单的方法是创建一个适用于列表中某个元素的函数.所以你需要这样的东西:

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)