2013-10-08 2 views
6

я пытаюсь напечатать Треугольник Паскаля до некоторой произвольной строки, после того, как некоторые думали, что я пришел с этим решением:Печать списка списков без скобок

next xs = zipWith (+) ([0] ++ xs) (xs ++ [0]) 
pascal n = take n (iterate next [1]) 

main = do 
    n <- readLn :: IO Int 
    mapM_ putStrLn $ map show $ pascal n 

Который работает достаточно хорошо, для печати, за исключением. Когда я применяю pascal 4 я получаю:

[1] 
[1,1] 
[1,2,1] 
[1,3,3,1] 

Когда то, что я действительно хочу это:

1 
1 1 
1 2 1 
1 3 3 1 

Есть ли способ, что я могу это сделать?

ответ

13

Определите свою собственную функцию довольно-печати:

import Data.List (intercalate) 

show' :: Show a => [a] -> String 
show' = intercalate " " . map show 
+0

Спасибо, это было очень полезно. В качестве ответа я могу отметить ответ. –

6

Вы могли unwords/unlines:

import Data.List 
... 
putStr $ unlines $ map (unwords . map show) $ pascal n 
Смежные вопросы