
From:  Paulo Moura 
Subject:  Re: Bug, or at least something wrong 
Date:  Mon, 22 Oct 2007 16:32:28 +0100 
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 SWIprolog, 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. SWIProlog 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 6201001 CovilhÃ£, Portugal Office 4.3 Ext. 3257 Phone: +351 275319891 Fax: +351 275319899 Email: <mailto:address@hidden> Home page: <http://www.di.ubi.pt/~pmoura> Research: <http://logtalk.org/> 
[Prev in Thread]  Current Thread  [Next in Thread] 