Bell numbers: Difference between revisions

→‎{{header|Haskell}}: Updated output.
(→‎{{header|Haskell}}: Updated output.)
Line 1,544:
 
{{out}}
putStrLn "<pre>First 10 rows of Bell's Triangle:"
<pre>bellTri :: [[Integer]]
[1]
bellTri =
[1,2]
let f xs = (last xs, xs)
[2,3,5]
in map snd (iterate (f . uncurry (scanl (+))) (1, [1]))
[5,7,10,15]
[15,20,27,37,52]
[52,67,87,114,151,203]
[203,255,322,409,523,674,877]
[877,1080,1335,1657,2066,2589,3263,4140]
[4140,5017,6097,7432,9089,11155,13744,17007,21147]
[21147,25287,30304,36401,43833,52922,64077,77821,94828,115975]
 
putStrLn "\nFirstFirst 15 Bell numbers:"
bell :: [Integer]
1
bell = map head bellTri
1
2
5
15
52
203
877
4140
21147
115975
678570
4213597
27644437
190899322
 
putStrLn "\n50th50th Bell number:"
main :: IO ()
10726137154573358400342215518590002633917247281</pre>
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)</pre>
 
And, of course, in terms of ''Control.Arrow'' or ''Control.Applicative'', the triangle function could also be written as:
9,655

edits