Am Dienstag, 6. Januar 2009 18:32 schrieb Murray Gross: > My last note had an error in it, and the code originally sent to the list > should be ignored. I have attached the current version of the code, and > here is some further information (the behavior is different, by the way, > but still apparently wrong). > > I have attached the current version of the program, which behaves > slightly differently from the version originally sent. > > I am running ghc 6.6, gcc 4.1.2, g++ 4.1.1, on Debian Linux. The compile > lines are ghc -threaded solve.hs or ghc -threaded -O2 solve.hs. The > execution line is ./a.out, which should give me single-threaded execution. > > Ignore the output on stdout; it is the same for both versions. > > On stderr, the unoptimized version of the attached code gives me both > "fail" and "goOn" (see lines #150 and #153). The optimized version gives > me only "goOn." I think that both should give me both "fail" and "goOn."
I get one "fail" and many "goOn" with optimisation using both, ghc-6.6 and ghc-6.8.3. That should indeed be so, because with optimisation, the branch else trace "fail" [] is only evaluated once, the result ([]) being reused. Without optimisation, that branch is re-evaluated every time it is hit, so many "fail" are printed. > > Were circumstances different, I might suspect that laziness and > optimization had something to do with this. However, earlier tests showed > inconsistency between the result of the test in gTst3 and the code where > the value of gTst3 is used. Could you elaborate? I couldn't find an inconsistency using your previous code, it behaved as it should (until I ^C-ed it). HTH, Daniel _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
