
Thanks for the insight! There's one thing I don't understand yet: On 27/04/14 02:32, Daniel Fischer wrote:
The problem is that you use the same list multiple times, and GHC thinks "hey, let me re-use that", so it gets floated to the top-level, and the inner "loop" really uses the list, which apart from the `case`s on the list forces it to use boxed 'Int's instead of Int#. Then the boxed Ints need to be unboxed to be used, oops.
When you say that the problem is that I "use the same list multiple times", do you mean that I use the actual syntactic expression `[0.._SIZE-1]` multiple times on multiple lines, and suggest that this should not happen if I use it in only one place? If so, how far does that go, and would GHC even notice that it is the same as a potential `[0.._511]` I might write elsewhere?
Do the idiomatic thing and write a loop ;)
Unfortunately, `forM_ [1..n]` is pretty much the most idiomatic and beautiful way I can come up with when ask for an iteration over 1 up to n! So this better be fixed :)