[mercury-users] Mercury program loops for ever with rotd-2003-02-23
Ian MacLarty
maclarty at cs.mu.OZ.AU
Tue Mar 8 16:23:40 AEDT 2005
Michael Day wrote:
> Hi,
>
> The following construct causes a program compiled with rotd-2003-02-23 to
> loop for ever until it segfaults:
>
> ( if my_function(X) > Max then
> ...
>
> where my_function is a det function that doesn't do anything weird.
>
> If the program is rewritten like this:
>
> Y = my_function(X),
> ( if Y > Max then
> ...
>
> then everything works fine.
>
> Has anyone else experienced this extremely odd behaviour with
> rotd-2003-02-23? I can attempt to create a decent test case if this bug is
> unfamiliar.
>
I've run the following program on the current unstable rotd and it
didn't loop:
:- module loop.
:- interface.
:- import_module io.
:- pred main(io::di, io::uo) is det.
:- implementation.
:- import_module int.
main(!IO) :-
Max = 10,
X = 5,
( if my_func(X) > Max then
io.write("yes", !IO)
else
io.write("no", !IO)
),
nl(!IO).
:- func my_func(int) = int.
my_func(X) = X + 1.
Would you mind checking if the bug still occurs on the current unstable
rotd and if it does please submit a test case along with the compilation
options.
Cheers,
Ian.
--------------------------------------------------------------------------
mercury-users mailing list
post: mercury-users at cs.mu.oz.au
administrative address: owner-mercury-users at cs.mu.oz.au
unsubscribe: Address: mercury-users-request at cs.mu.oz.au Message: unsubscribe
subscribe: Address: mercury-users-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------
More information about the users
mailing list