2017-05-31 53 views
2

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

[1,2,3,4] = 1234 

如果元素是字符串,我可以mapM_ putStr ["1","2","3","\n"] 打印,但他们都没有..有人知道一个解决方案,使功能和打印?

我尝试dignum xs = [ mapM_ putStr x | x <- xs ]过的击打不工作..

回答

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类的类型实例。

+0

谢谢!解决了 ! – oxsaulxo

+0

@oxsaulxo请将答案标记为已接受。 –