This is a hint (Hinweis) text of GUPU taken literally from the system. It's probably not very interesting reading for you.
**NEXT:To continue the guided tour go back where You came from
**NEXT:Continue reading the hints in German (...)

Dieser Hinweis ist aus der Übung im WS 1994/95 oder aus einer noch älteren Übung oder war nie Teil einer Übung und ist daher möglicherweise für spätere Übungen nicht gültig!


	
      Das vordefiniere Prädikat name/2
                    und
          warum Sie dieses Prädikat
            nicht verwenden sollen.

Das Prädikat name/2 ist ein BIP (engl.
ISO-Jargon für Built-In Procedure/Predicate),
das noch sehr viele Prologsysteme unterstützen
und auch leider sehr viele Lehrbücher noch
erwähnen). Es ist ein gutes Beispiel für ein
vordefiniertes Prädikat, das eine sehr schlecht
gewählte Semantik besitzt. Wieso die Semantik
von name/2 nicht klar ist:

:- name(abc,Chars), Chars = "abc". % ok
:- name(Atom,"abc"), Atom = abc. % ok
:- name(atom,"abc"). % ok

:- name(13, Chars), Chars = "13". % ok
:- name(N, "13"), N = 13. % ok
:- name(13, "13"). % ok

So weit, so gut. Problematisch wird die
Definition erst, wenn Atome vorkommen, die aus
Zeichen einer Zahl bestehen.

:- name('13', Chars), Chars = "13". % ?

Wenn '13' -> "13", so sollte doch auch die
umgekehrte Richtung gelten! Aber:

:- name(N, "13"), dif(N,'13'). % !!!

Anders ausgedrückt:
bizarr(A) :-
	atom(A),
	name(A,Chars),
	name(Ax,Chars),
	dif(A,Ax),
	fehler('Wieso ist das zurückkonvertierte Atom nicht gleich dem ursprünglichen?').

Aus diesem Grunde gibt es in neueren (naja,
auch schon seit vielleicht 10 Jahren...)
Prologsystemen zwei getrennte Prädikate, die
auch im Skriptum besprochen werden. Seitdem ist
atom_chars/2 eindeutig definiert, nur
number_chars macht genaugenommen noch immer
Probleme:
:- number_chars(N,"01"), number_chars(N,Chars).

Zurück: \hinweis{init}

**NEXT:To continue the guided tour go back where You came from
**NEXT:Continue reading the hints in German