我是 haskell 的新手,我正在尝试在同一行中打印列表的元素。例如:
[1,2,3,4] = 1234
如果元素是字符串,我可以用 mapM_ putStr ["1","2","3","\n"]
打印它
但他们不是......有人知道一个解决方案来制作一个函数并打印它吗?
我尝试dignum xs = [ mapM_ putStr x | x <- xs ]
也是,但不起作用..
最佳答案
您可以使用 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< 的类型实例
类。
关于list - 在同一行中打印列表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44286949/