RosettaCodeData/Task/Bell-numbers/Haskell/bell-numbers-1.hs

17 lines
387 B
Haskell

bellTri :: [[Integer]]
bellTri =
let f xs = (last xs, xs)
in map snd (iterate (f . uncurry (scanl (+))) (1, [1]))
bell :: [Integer]
bell = map head bellTri
main :: IO ()
main = do
putStrLn "First 10 rows of Bell's Triangle:"
mapM_ print (take 10 bellTri)
putStrLn "\nFirst 15 Bell numbers:"
mapM_ print (take 15 bell)
putStrLn "\n50th Bell number:"
print (bell !! 49)