Re: Bug, or at least something wrong
Lindsey Spratt <[email protected]>
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
The 'A is X mod 2' requires that X be bound to an integer, but 16.0 is a float. You could change the line after 'even(X)' to 'Y is X // 2'. The '//' operator guarantees an integer result: step(X, Y) :- X > 1, even(X), Y is X // 2. Cheers, Lindsey Spratt On Oct 21, 2007, at 3:44 PM, Felipe Ignacio Canas Sabat wrote: > Hello, > > These are the commands I am using: > > %%%%%%%%%%%% > even(X) :- > A is X mod 2, > A == 0. > > odd(X) :- > A is X mod 2, > A == 1. > > step(X,Y) :- > X > 1, > even(X), > Y is X/2. > > step(X,Y) :- > X > 1, > odd(X), > Y is 3*X + 1. > %%%%%%%%%%%% > > And this is what I'm running: > > | ?- step(32,X), step(X,Y), step(Y,Z). > > And this is the error I get: > > uncaught exception: error(type_error(integer,16.0),(is)/2) > > I don't get this error when I run it on SWI-prolog, and I really don't > see what the error is. This is the trace: > > 1 1 Call: step(32,_16) ? > 2 2 Call: 32>1 ? > 2 2 Exit: 32>1 ? > 3 2 Call: even(32) ? > 4 3 Call: _166 is 32 mod 2 ? > 4 3 Exit: 0 is 32 mod 2 ? > 5 3 Call: 0==0 ? > 5 3 Exit: 0==0 ? > 3 2 Exit: even(32) ? > 6 2 Call: _16 is 32/2 ? > 6 2 Exit: 16.0 is 32/2 ? > 1 1 Exit: step(32,16.0) ? > 7 1 Call: step(16.0,_20) ? > 8 2 Call: 16.0>1 ? > 8 2 Exit: 16.0>1 ? > 9 2 Call: even(16.0) ? > * 10 3 Call: _320 is 16.0 mod 2 ? > * 10 3 Exception: _332 is 16.0 mod 2 ? > 9 2 Exception: even(16.0) ? > 7 1 Exception: step(16.0,_20) ? > > I put the asterisks next to the lines where I see something strange > happening. Namely, it goes from assigning something to _320 to then > report an exception concerning _332. > > What's more, after running the same instruction once more, I get a > Segmentation Fault. I couldn't figure out how to build a not stripped > binary, so no backtrace, sorry. > > Some required info: > > Machine: > Linux <hostname> 2.6.18-5-686 #1 SMP <date> i686 GNU/Linux > > Distro: > Debian 4.0r1 (Etch) > > GNU Prolog version: > 1.3.0 > > Hope it helps. > > Bye, > -Felipe > > > > _______________________________________________ > Bug-prolog mailing list > [email protected] > http://lists.gnu.org/mailman/listinfo/bug-prolog