2017-05-31 85 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請將答案標記爲已接受。 –