
I'm working on a program where I need to compute a gajillion (171442176) polynomials and evaluate them more than once. This is the definition of the polynomial, and it is expensive to compute:
polynomial :: Tetrahedron -> (RealFunction Point) polynomial t = sum [ (c t i j k l) `cmult` (beta t i j k l) | i <- [0..3], j <- [0..3], k <- [0..3], l <- [0..3], i + j + k + l == 3]
Currently, I'm storing the polynomials in an array, which is quickly devoured by the OOM killer. This makes me wonder: how much memory can I expect to use storing a function in an array? Is it possible to save some space through strictness? Does that question even make sense?