5 comments

[ 4.3 ms ] story [ 27.7 ms ] thread
From what I know about compilers(not much) - when there is calculation without variables they just compute it on the fly and substitute in the code where possible. And I think this is just what is going on.

You should read the n from the input or given as parameter to the program.

I believe it is called stream-fusion. The intermediate data-structures are optimized away (since they're unboxed), allowing for faster operations.
So what was the point?
To show that haskell and C can achieve equivalent performance on certain numeric calculations.
I think it would be nice if there will be a world where you can express such a problem in a decidable mini-language where the compiler can deduce that the answer will be n(n+1)/2. :)