Re: Bug, or at least something wrong
Paulo Moura <[email protected]>
| Newsgroups | gmane.comp.gnu.prolog.bugs |
|---|---|
| Message-ID | <[email protected]> |
On 2007/10/21, at 20:44, Felipe Ignacio Canas Sabat wrote: > 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: There is a bug in your code: you want integer division, not float division in the first clause of step/2.. GNU Prolog behavior is correct. SWI-Prolog is more forgiving. You may also use arithmetic equality (=:=/2) instead of term equality (==/2). Cheers, Paulo ----------------------------------------------------------------- Paulo Jorge Lopes de Moura Dep. of Computer Science, University of Beira Interior 6201-001 Covilhã, Portugal Office 4.3 Ext. 3257 Phone: +351 275319891 Fax: +351 275319899 Email: <mailto:[email protected]> Home page: <http://www.di.ubi.pt/~pmoura> Research: <http://logtalk.org/> -----------------------------------------------------------------