RosettaCodeData/Task/Sierpinski-triangle/Haskell/sierpinski-triangle-2.hs
2017-09-25 22:28:19 +02:00

13 lines
377 B
Haskell

import Data.List (intercalate)
sierpinski :: Int -> [String]
sierpinski 0 = [""]
sierpinski n =
concat $
(<$> sierpinski (n - 1)) <$> -- Previous triangle,
[ flip intercalate ([replicate (2 ^ (n - 1))] <*> " -") -- centred,
, (++) <*> ('+' :) -- above singly spaced duplicates.
]
main :: IO ()
main = mapM_ putStrLn $ sierpinski 4