bug-prolog
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Exception in 1.2.8 but not in 1.2.1


From: Robert Staerk
Subject: Exception in 1.2.8 but not in 1.2.1
Date: Fri, 31 May 2002 12:58:42 +0200

------------------------------------------------------------------------
Description of the problem (Sun-Sparc and PC-Redhat-Linux): 
------------------------------------------------------------------------
The following goal throws an exception in gprolog 1.2.8 and 1.2.12
but not in 1.2.1 (I didn't try other versions).

GNU Prolog 1.2.8

  ?- test(1+2,X).

  uncaught exception: error(type_error(evaluable,infix/3),(=<)/2)

GNU Prolog 1.2.1

  ?- test(1+2,X).

  X = i(+,a(1),a(2))
------------------------------------------------------------------------
uname -a
SunOS tomis 5.6 Generic_105181-17 sun4u sparc SUNW,Ultra-5_10

uname -a
Linux qed 2.4.9-12 #1 Tue Oct 30 18:33:49 EST 2001 i686 unknown
------------------------------------------------------------------------
Program used:
------------------------------------------------------------------------
test(A,Tree) :-
        test(A,1200,Tree).

test(A,Prec,Tree) :-
        (       atomic(A) ->
                Tree = a(A)
        ;       A =.. L,
                test_list(L,Prec,Tree)
        ).

test_list(L,Prec1,Tree4) :-
        L = [Name,A,B],
        infix_prec(Name,Prec2,Prec3,Prec4), !,
        test(A,Prec3,Tree1),
        test(B,Prec4,Tree2),
        Tree3 = i(Name,Tree1,Tree2),
        parenthesize(Prec1,Prec2,Tree3,Tree4).

parenthesize(Prec1,Prec2,Tree1,Tree2) :-
        (       Prec2 =< Prec1 ->
                Tree2 = Tree1
        ;       Tree2 = p(Tree1)
        ).

infix_prec(Op,Prec1,Prec2,Prec1) :-
        current_op(Prec1,xfy,Op),
        Prec2 is Prec1 - 1.
infix_prec(Op,Prec1,Prec1,Prec2) :- 
        current_op(Prec1,yfx,Op),
        Prec2 is Prec1 - 1.

------------------------------------------------------------------------
tomis>  gprolog
GNU Prolog 1.2.8
By Daniel Diaz
Copyright (C) 1999-2001 Daniel Diaz
| ?- [example].
compiling /home/staerk/cpc-1.03/example.pl for byte code...
/home/staerk/cpc-1.03/example.pl compiled, 30 lines read - 3979 bytes written,
69 ms

(10 ms) yes
| ?- test(1+2,X).
uncaught exception: error(type_error(evaluable,i/3),(=<)/2)
| ?- trace.
The debugger will first creep -- showing everything (trace)

yes
{trace}
| ?- test(1+2,X).
      1    1  Call: test(1+2,_18) ? 
      2    2  Call: test(1+2,1200,_18) ? 
      3    3  Call: atomic(1+2) ? 
      3    3  Fail: atomic(1+2) ? 
      3    3  Call: 1+2=.._112 ? 
      3    3  Exit: 1+2=..[+,1,2] ? 
      4    3  Call: test_list([+,1,2],1200,_18) ? 
      5    4  Call: infix_prec(+,_170,_171,_172) ? 
      6    5  Call: current_op(_195,xfy,+) ? 
      6    5  Fail: current_op(_183,xfy,+) ? 
      6    5  Call: current_op(_195,yfx,+) ? 
      6    5  Exit: current_op(500,yfx,+) ? 
      7    5  Call: _223 is 500-1 ? 
      7    5  Exit: 499 is 500-1 ? 
      5    4  Exit: infix_prec(+,500,500,499) ? 
      8    4  Call: test(1,500,_250) ? 
      9    5  Call: atomic(1) ? 
      9    5  Exit: atomic(1) ? 
      8    4  Exit: test(1,500,a(1)) ? 
     10    4  Call: test(2,499,_302) ? 
     11    5  Call: atomic(2) ? 
     11    5  Exit: atomic(2) ? 
     10    4  Exit: test(2,499,a(2)) ? 
     12    4  Call:
parenthesize(1200,d(12,[a(parenthesize(1200,d(12,[a(parenthesize(1200,d(...,...),...),12,4,...),a(test_list(...,...),4,...),a(...,...),...]),i(+,a(1),a(2)),_18),12,4,249),a(test_list([+,1,2],1200,_18),4,3,196),a(test(1+2,1200,_18),2,2,143),a(test(1+2,_18),1,1,87)]),i(+,a(1),a(2)),_18)
? 
     13    5  Call:
d(13,[a(d(13,[a(d(...,...)=<1200,13,5,...),a(parenthesize(...,...),12,...),a(...,...),...])=<1200,13,5,336),a(parenthesize(1200,d(13,[a(...
=<
...,13,...),a(...,...),...]),i(+,a(1),a(2)),_18),12,4,249),a(test_list([+,1,...],1200,_18),4,3,196),a(test(1+2,1200,_18),2,2,143),a(test(...
+ ...,_18),1,1,...)])=<1200 ? 
     13    5  Exception:
d(13,[a(d(13,[a(d(...,...)=<1200,13,5,...),a(parenthesize(...,...),12,...),a(...,...),...])=<1200,13,5,336),a(parenthesize(1200,d(13,[a(...
=<
...,13,...),a(...,...),...]),i(+,a(1),a(2)),_18),12,4,249),a(test_list([+,1,...],1200,_18),4,3,196),a(test(1+2,1200,_18),2,2,143),a(test(...
+ ...,_18),1,1,...)])=<1200 ? 
     12    4  Exception:
parenthesize(1200,d(12,[a(parenthesize(1200,d(12,[a(parenthesize(1200,d(...,...),...),12,4,...),a(test_list(...,...),4,...),a(...,...),...]),i(+,a(1),a(2)),_18),12,4,249),a(test_list([+,1,2],1200,_18),4,3,196),a(test(1+2,1200,_18),2,2,143),a(test(1+2,_18),1,1,87)]),i(+,a(1),a(2)),_18)
? 
      4    3  Exception: test_list([+,1,2],1200,_18) ? 
      2    2  Exception: test(1+2,1200,_18) ? 
      1    1  Exception: test(1+2,_18) ? 
uncaught exception: error(type_error(evaluable,d/2),(=<)/2)
{trace}
| ?- 
------------------------------------------------------------------------
Line 12 looks strange to me.
------------------------------------------------------------------------

--------------------------------------------------------
Robert F. Staerk                   (St\"ark, St&auml;rk)
Theoretische Informatik             phone: +41 1 6327970
ETH Zentrum                           fax: +41 1 6321478
CH-8092 Zuerich           http://www.inf.ethz.ch/~staerk
--------------------------------------------------------



reply via email to

[Prev in Thread] Current Thread [Next in Thread]