>>> product [] 1
>>> product [42] 42
>>> product [1..10] 3628800
>>> product [4.1, 2.0, 1.7] 13.939999999999998
>>> product [1..] * Hangs forever *
>>> product [] 1 >>> product [42] 42 >>> product [1..10] 3628800 >>> product [4.1, 2.0, 1.7] 13.939999999999998 >>> product [1..] * Hangs forever *
>>> product [1..10] 3628800
mapped product :: Stream (Stream (Of Int)) m r -> Stream (Of Int) m r
product = Stream.fold Fold.product
\(Array16 xs) -> Array.product xs == product (Array.toList xs)