[PPL-devel] [Fwd: Re: Any Prolog language lawyer out there?]

Roberto Bagnara bagnara at cs.unipr.it
Tue Oct 19 16:49:02 CEST 2004



-------- Original Message --------
Subject: Re: Any Prolog language lawyer out there?
Date: Tue, 19 Oct 2004 16:29:24 +0200
From: Bart Demoen <bmd at cs.kuleuven.ac.be>
Organization: KULeuvenNet
Newsgroups: comp.lang.prolog
References: <41750912.8040102 at cs.unipr.it>

Roberto,


> Am I correct if I say that all the 6 tested systems are /not/ violating
> the ISO Prolog standard because unary plus is not mentioned in its Table 7
> (p. 19) and thus its presence and priority are implementation-defined?
> All the best,
> 
>     Roberto
> 
> P.S.  Standard or not standard, I find all this quite striking.
> 


The + not figuring in ISO as fy, makes the situation murky. But - is in ISO as 200 fy.
And one finds differences like:

In SICStus:

| ?- prolog_flag(language,_,iso).
yes
| ?- current_op(200,fy,-).
yes
| ?- functor(- 4,X,Y).
X = -4,
Y = 0 ?


while GNU-Prolog says:

| ?- current_op(200,fy,-).
yes
| ?- functor(- 4,X,Y).
X = -
Y = 1


The old DEC-10 reader (used in e.g. SICStus) contains the clauses:


read(atom(-), L, [Token-_|S1], Precedence, Answer, Layout, S) :-
         number_token(Token, Number), !,
         Negative is -Number,
         read_rest(S1, 0, Negative, L, Precedence, Answer, Layout, S).
read(atom(+), L, [Token-_|S1], Precedence, Answer, Layout, S) :-
         number_token(Token, Number), !,
         Negative is +Number,
         read_rest(S1, 0, Negative, L, Precedence, Answer, Layout, S).

which seem to be responsible for the behaviour above. I think not ISO at all.

Moreover, if one retracts + as an operator, one should get syntax errors
for +4, but here is SICStus again:

| ?- op(0,fy,+).
yes
| ?- write(+4).
4
yes


while GNU says:

| ?- op(0,fy,+).

yes
| ?- write(+4).
uncaught exception: error(syntax_error('user_input:2 (char:8) , or ) expected'),read_term/3)


Cheers

Bart Demoen

-- 
Prof. Roberto Bagnara
Computer Science Group
Department of Mathematics, University of Parma, Italy
http://www.cs.unipr.it/~bagnara/
mailto:bagnara at cs.unipr.it



More information about the PPL-devel mailing list