
shoot.spam:
Hi,
Please bear with a very basic question. I am trying to 'learn me a Haskell for great good' using Hutton's book and some online tutorials. I started off with Hugs and recently used GHC (to use the 'let a = .." syntax interactively, which Hugs doesn't allow perhaps).
There's a simple issue I am having with GHC. sum[1..100000] works fine on Hugs, however, the same in GHCi generates a stack overflow exception. I am trying to figure out what's going on.
Prelude> sum[1..100000] 5000050000 Prelude> sum[1..1000000] *** Exception: stack overflow Prelude>
________________________
Hugs> sum[1..10000] 50005000 Hugs> sum[1..100000] 5000050000 Hugs>
Thanks in anticipation.
Best regards, Vishal Belsare
Probably the simplest thing to do is compile the code, $ cat A.hs main = print (sum [1..1000000]) $ ghc -O2 A.hs $ time ./a.out 500000500000 ./a.out 0.09s user 0.00s system 96% cpu 0.100 total As Duncan pointed out, Hugs has a non-standard strict implementation of sum, which is nice, but breaks the spec if you do it at every type. GHC with optimisations determines that indeed this should be strict, replacing sum with a specialised version, but those optimisations are enabled in the compiler, not ghci. -- Don