16 lines
567 B
Text
16 lines
567 B
Text
main :: [sys_message]
|
|
main = [Stdout "First 15 and 50th Bell numbers:\n",
|
|
Stdout (lay [(rjustify 2 (show i)) ++ ": " ++ show (bell_numbers ! i)
|
|
| i <- [1..15] ++ [50]]),
|
|
Stdout "\nFirst 10 rows of the Bell triangle:\n",
|
|
Stdout (lay [concat [rjustify 7 (show n) | n <- row]
|
|
| row <- take 10 bell_triangle])
|
|
]
|
|
|
|
|
|
bell_numbers :: [num]
|
|
bell_numbers = map last bell_triangle
|
|
|
|
bell_triangle :: [[num]]
|
|
bell_triangle = iterate bell_step [1]
|
|
where bell_step row = scan (+) (last row) row
|