ISO/IEC JTC1 SC22 WG17
Comparison of handling of (:-)/1 and (:-)/2

ISO Prolog works.

#Queryanswer description
with errors from 13211-1:1995 and 8.18.1.3
SICStus
4.9.0
Scryer
0.9.4
Trealla
2.52.25
GNU
1.6.0
Ichiban
1.2.0
ECLiPSe
7.0#42 -L iso
Tau
0.3.4
SWI
9.3.17
X
1.0.63
YAP
7.4.0
XSB
5.0.0
B
7.8b7
Ciao
1.24.0
Minerva
2.4
IF
V5.1B
IV
1.4.2
#Queryanswer description SICStus Scryer Trealla GNU Ichiban ECLiPSe Tau SWI X YAP XSB B Ciao Minerva IF IV
c1 ?- call(1). type_error(callable,1). OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK
c2 ?- call((1,fail)). type_error(callable,(1,fail)). OK OK OK OK OK OK OK OK OK OK t._e.(c.,1) t._e.(c.,1) t._e.(c.,1) t._e.(c.,1) t._e.(c.,1) t._e.(c.,1)
c3 ?- call((fail,1)). type_error(callable,(fail,1)). OK OK OK OK OK OK OK OK OK OK t._e.(c.,1) false false false OK t._e.(c.,1)
c4 ?- call((!;1)). type_error(callable,(!;1)). OK OK OK OK OK OK OK OK OK true OK true true true OK t._e.(c.,1)
c5 ?- call((!;\+1)). true. OK OK OK OK OK OK OK t._e.(c.,...) OK OK OK OK OK OK OK OK
c6 ?- call((!;call(1))). true. OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK
c7 c?- call((\+!;X=a)). X=a. OK OK OK OK OK OK OK OK OK OK OK OK Warning OK OK OK
f1 ?- functor(T,F,A). instantiation_error. OK OK OK OK OK OK OK OK OK OK OK OK OK new OK OK OK
f2 ?- functor(T,1,2). type_error(atom,1). OK OK OK OK OK OK OK OK OK OK false OK OK new OK OK OK
f3 ?- functor([_],.,2). true. OK OK OK OK OK OK OK false OK OK OK OK OK OK OK OK
d1 ?- asserta((:-a)). permission_error(modify,static_procedure,(:-)/1 ). OK user: OK OK true true true true? true true true true true true true OK p._e.(m.,s.,(:-a))
d2/**/ ?- clause((:-a),B). permission_error(access,private_procedure,(:-)/1). OK user: OK false B=true B=true B=true B=true? B=true B=true p._e.(a.,sy._p.,(:-)/1) B=true B=true B='bas.:true' B=true false false
d3/**/ ?- (:-A). existence_error(procedure,(:-)/1). context_e.(q.,cl._or_di.)* OK OK A=a A=a A=a* OK? A=a A=a A=a* A=a A=a A=a A=a OK undef._c.((:-)/1)
d4 ?- (:-A). existence_error(procedure,(:-)/1). context_e.(q.,cl._or_di.)* OK OK OK OK OK* OK OK OKi._e. usermod: OK e._e.(p.,'user::-'/1) OK OK undef._c.((:-)/1)
d5 ?- call(:-,A). existence_error(procedure,(:-)/1). context_e.(q.,cl._or_di.) OK OK OK OK OK OK OK OK i._e. OK OK e._e.(p.,'user:call'/2) e._e.(p.,call/2) i._e. undef._c.(call/2)?
r1 ?- asserta(((a:-b):-true)). permission_error(modify,static_procedure,(:-)/2 ). OK user: OK OK true true true true? true true true OK true true true OK p._e.(m.,s.,(a:-b))
r2/**/ ?- clause((a:-b),B). permission_error(access,private_procedure,(:-)/2). OK user: OK false B=true B=true B=true B=true? false B=true? B=true p._e.(a.,p._pred.,...) B=true B='bas.:true' B=true false false
r3/**/continue ?- (A:-B). existence_error(procedure,(:-)/1). context_e.(q.,cl._or_di.)* OK OK A=a A=a A=a* OK? A=a A=a A=a* A=a A=a A=a A=a OK undef._c.((:-)/1)
r4 ?- (A:-B). existence_error(procedure,(:-)/1). context_e.(q.,cl._or_di.)* OK OK OK OK OK* OK OK OKi._e. usermod: OK e._e.(p.,'user::-'/1) OK OK undef._c.((:-)/1)
r5 ?- call(:-,A,B). existence_error(procedure,(:-)/1). context_e.(q.,cl._or_di.) OK OK OK OK OK OK OK OK i._e. OK OK e._e.(p.,'user:call'/2) e._e.(p.,call/2) i._e. undef._c.(call/2)?
g1 ?- asserta((a-->b)). permission_error(modify,static_procedure,(-->)/2). OK user: OK OK true true OK true true true true OK true true true OK OK
g2/**/ ?- clause((a-->b),B). permission_error(access,private_procedure,(-->)/2). OK user: OK OK B=true B=true OK B=true B=true B=true p._e.(a.,s._p.,(-->)/2) OK B=true B='bas.:true' B=true false false
g3 ?- (X-->Y). existence_error(procedure,(-->)/2). context_e.(q.,cl._or_di.) OK OK OK OK throw(abort) OK OK OK X= ...,Y= (call(A);call(B)) OK OK e._e.(p.,'user:-->'/2) OK OK undef._c.((-->)/2)
classmeaning
regregular use
goodconforming
corpcorrect but problematic
badcerror's culprit wrong
badterror's type wrong
badeerror class wrong
badrrejection unexpected
badmmisinterpretation
badvvulnerability
* instantiation error when entered directly, result with call(G_0)

History


2023-07..08: #56
2024-06-03: Resolution A1.
Version Control, Validated HTML
q1 ?- call((:- X = r)). type_error(callable,1). OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK OK

Version Control, Validated HTML