Problem mit Prolog Regel (Arithmetik)

Neue Frage »

Auf diesen Beitrag antworten »
Proloprob Problem mit Prolog Regel (Arithmetik)

Hallo,

ich beschäftige mich gerade durch den Unterricht etwas mit Prolog. Nebenbei bin ich auf ein Pdf-Dokument gestoßen, das einige Beispiel bereithält. Folgende Regel versteh ich aber nicht:
code:
1:
2:
3:
4:
5:
6:
zahl(1).
zahl(N) :-
   zahl(M),
   N is M + 1.


Wenn ich "zahl(...)" mit einer bestimmten natürlichen Zahl aufrufe, liefert es mir true und wenn ich eine Variable für den Aufruf verwende, zählt mir Prolog von 1 alle natürlichen Zahlen auf. Mein Problem ist, dass ich schlichtweg die Logik dahinter nicht verstehe. Genauer gesagt weiß ich nicht, wie Prolog die Variable M verwendet kann, wenn diese vorher nirgendwo deklariert oder besser gesagt definiert wurde, wie kann Prolog "zahl(M)" aufrufen, ohne zu wissen, was M ist? Vielleicht kann mir ja jemand eine Erläuterung geben, stehe wohl gerade auf dem Schlauch.

Vielen Dank und freundliche Grüße!
 
Auf diesen Beitrag antworten »
Karlito

Hallo,

schau dir mal den Artikel zu Typinferenz an.

Gruß,

Karlito
Auf diesen Beitrag antworten »
Proloprob

Hi, das hilft auf jeden Fall etwas weiter. Ich verstehe dennoch nicht ganz, warum Prolog so locker zahl(M) aufrufen kann. Geht Prolog dann intern die Wissensbasis durch und setzt für M 1 ein, oder in wie fern wird damit verfahren?

Danke und liebe Grüße
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »