RosettaCodeData/Task/Bell-numbers/Miranda/bell-numbers.miranda
2025-02-27 18:35:13 -05:00

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