Bell numbers: Difference between revisions
m
→{{header|Haskell}}
(add PariGP code (from OEIS)) |
|||
Line 1,527:
<lang haskell>bellTri :: [[Integer]]
bellTri =
bellTri = map snd (iterate (f . uncurry (scanl (+))) (1,[1]))▼
let f xs = (last xs, xs)
in map snd (iterate (f
bell :: [Integer]
bell = map head bellTri
main :: IO ()
main = do
putStrLn "First 10 rows of Bell's Triangle:"
mapM_ print (take 10 bellTri)
putStrLn "
mapM_ print (take 15 bell)
putStrLn "
print (bell !! 49)</lang>
{{out}}
<pre>bellTri :: [[Integer]]
<pre>First 10 rows of Bell's Triangle▼
bellTri =
let f xs = (last xs, xs)
bell :: [Integer]
bell = map head bellTri
main :: IO ()
main = do
mapM_ print (take 10 bellTri)
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:
|