[MLton-user] MLton misbehaving?

Vesa Karvonen vesa.a.j.k at gmail.com
Wed Apr 30 06:54:37 PDT 2008


On Wed, Apr 30, 2008 at 3:30 PM, Johan Grönqvist
<johan.gronqvist at matfys.lth.se> wrote:
>  I have a program that, in many situations, seems to produce reasonable
>  results.

Seeing the program would most likely help.  Without it, others can only guess.

>  In order to debug, I compile with -const 'Exn.keepHistory true', but then
>  no unhandled exception is raised, and the program keeps runing happily.

The option does change the produced code.  I would not find it
surprising if the option could change floating point results on the
x86 without the -ieee-fp true option.

>  Thus, I conclude that commenting out unused code
>  alters the program behaviour.

Based on your description, it does not seem strictly unused.  MLton is
a whole-program compiler and commenting out code can change the
results of some program transformations. For example, if you have a
function that is initially called from two or more places and you then
delete all but one call to the function, then the function may become
a subject for a number of optimizations.  This can change, for
example, register allocation and might change floating point results.

>  Side note: As I do not use any kind of random numbers,
>  I am also puzzled by the fact that I get different numerical answers
>  depending on compiler options.

One possibility would be floating point imprecision.  Have you tried
compiling with -ieee-fp true?  The numerical values of "Energy"
(3.01984609884E~20 and  9.3088938774E~21) are near the extended
precision limit and might suggest that floating point issues are to
blame.  If that is the case, then you might need to rethink the
algorithm.

-Vesa Karvonen


More information about the MLton-user mailing list