在同一行中打印列表的元素

时间:2017-05-31 14:04:00

标签: list haskell

我是haskell的新手,我正在尝试在同一行中打印列表的元素。例如:

[1,2,3,4] = 1234 

如果元素是字符串,我可以使用mapM_ putStr ["1","2","3","\n"]打印它 但它们不是..有人知道制作功能并打印出来的解决方案吗?

我也尝试dignum xs = [ mapM_ putStr x | x <- xs ]但是不起作用..

1 个答案:

答案 0 :(得分:3)

您可以使用show :: Show a => a -> String将元素(此处为整数)转换为文本表示形式String

此外,我们可以使用concat :: [[a]] -> [a]将元素列表的列表转换为元素列表(通过将这些列表连接在一起)。在String的上下文中,我们可以使用concat :: [String] -> String将数字加在一起。

所以我们可以使用:

printConcat :: Show a => [a] -> IO ()
printConcat = putStrLn . concat . map show

然后生成:

Prelude> printConcat [1,2,3,4]
1234

请注意,printConcat函数仅限于数字(整数),它可以采用任何类型的对象作为Show类的类型实例。< / p>