# Zugriff auf "Methoden" in Prolog



## Plastikeimer (14. Jun 2011)

Hallo 
Ich möchte in Prolog innerhalb einer Definition auf eine andere zugreifen.

Mein Problem veranschauliche ich an einem kleinen Beispiel-Code.
Hier läuft Prolog durch eine Liste durch und wenn es ein Element findet, zählt es den Zähler hoch:

count_element( [], Element, 0). 
count_element( [Element|T], Element, Anzahl) :-   count_element(T, Element, X), Anzahl is X + 1. 
count_element( [H|T], Element, Anzahl) :-   count_element(T, Element, Anzahl). 

Jetzt nehme ich den gleichen Code und möchte anstatt den Zähler hochzuzählen, den Wert des  Zählers über den Zugriff auf eine "Methode" zuweisen:


count_element( [], Element, 0). 
count_element( [Element|T], Element, Anzahl) :-   count_element(T, Element, X), Anzahl is X+bel(Element). 
count_element( [H|T], Element, Anzahl) :-   count_element(T, Element, Anzahl). 

Hierbei wurde die 1 jetzt einfach durch ein "Methodenaufruf" ersetzt.
Ich habe verschiedene Formate ausprobiert, Klammerung, etc. oder ein Z definiert, welches den "Methodenaufruf" quasi verlagert.
Nichts hat funktioniert.

Bitte um Hilfe  Daanke.


----------



## SlaterB (14. Jun 2011)

das muss doch so ähnlich werden, oder? 

count_element( [Element|T], Element, Anzahl) :-   count_element(T, Element, X), bel(Element, Z), Anzahl is X+Z. 

genau wie X durch den rekursiven Methodenaufruf gesetzt wird ist Z als quasi-Rückgabewert auch eine Art Parameter,
hast du dieses Grundkonzept eingehalten?


----------



## Plastikeimer (14. Jun 2011)

Vielen Dank !
Du hast mir die Augen geöffnet 

Hatte dieses Prinzip nicht als solches erkannt ! Jetzt gehts


----------

