Dr. Ali ED-DBALI Maître de Conférences en Informatique

Couverture livre : Prolog The Standard

This page summarizes all remarks and errors discovered in the book Prolog - The standard : Reference Manual.
Please report additional errata by email to: Ali.EDDBALI (at) univ-orleans.fr

Page # Location Original text (if any) Correct text
10 2nd clause of sumlist predicate sumlist([X,L],S) :- sumlist(L,R), S is R + X. sumlist([X|L],S) :- sumlist(L,R), S is R + X.
51Last lineatom_chars(X,[a|X]) atom_chars(X,[a|L]). (Produces the same error)
58How to use it bagof(@term, +body_term, ?list)bagof(?term, +body_term, ?list)
59Line 1 (note 5) The variables of Template and the non free variables of Bgoal remain uninstantiated after each success of bagof(Template, Bgoal, Blist). The variables of Template and the non free variables of Bgoal which do not occur in Blist remain uninstantiated after each success of bagof(Template, Bgoal, Blist).
71Example 2 close(user_input).close(user_input, []).
79 Last line current_op(0,X,Y). domain_error(operator_priority,0) This may not be required by the standard. A trully standard conforming example would be: current_op(-1,X,Y). It is in fact not clear in the standard whether 0 is an element of the operator priority.
88 How to use it findall(@term, @body_term, ?list) findall(?term, +body_term, ?list)
93 Description, item 4 Arity is an integer n, 0 < n < maxarity Arity is an integer n, 0 < n <= maxarity
146 Error cases   St in Error-term should be read Stream_or_alias
155 Example 3   Replace insect(A) by animal(A) and insect(_01) by animal(_01)
158 Description, line 3 autorzied authorized
160 How to use it setof(@term, @body_term, ?list) setof(?term, +body_term, ?list)
165 Description, line 7 repective respective
167 Example 3 north(a) @> foo(a, b). Succeeds. north(a) @> foo(a, b). Fails.
168 Example 4 north(a) @>= foo(a, b). Succeeds. north(a) @>= foo(a, b). Fails.
179 Description, item 5 0 < n < maxarity 0 < n <= maxarity
182 Examples Add the following example write('Fred'). Succeeds with empty substitution, and the current output stream is left as: ...Fred
192 Examples Add the following example writeq('Fred'). Succeeds with empty substitution, and the current output stream is left as: ...'Fred'

The authors are very grateful to Dr. Johnathan Hodgson, from Saint Joseph's University, who pointed out most of these mistakes.
Many thanks also to George S. Cowan (ACM).