我是haskell的新手,我正在尝试在同一行中打印列表的元素。例如:
[1,2,3,4] = 1234
如果元素是字符串,我可以使用mapM_ putStr ["1","2","3","\n"]
打印它
但它们不是..有人知道制作功能并打印出来的解决方案吗?
我也尝试dignum xs = [ mapM_ putStr x | x <- xs ]
但是不起作用..
答案 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>