Normalmente costruisco il mio albero di ricerca seguendo la convenzione comune :
- Inserisci query o obiettivi che necessitano di unificazione all'interno delle caselle del nodo.
- Annota i punti decisionali sui bordi, in cui Prolog ha assegnato un elemento a una variabile.
- I nodi foglia che sono completamente saturi saranno una scatola vuota, rappresentano una soluzione.
- I nodi foglia che non possono essere soddisfatti e rappresentano i tentativi falliti avranno l'obiettivo insoddisfatto nella loro casella, per renderli ancora più chiari seguirò anche la convenzione di marcarli posizionando sotto di essi un simbolo a croce.
Il modo in cui sopra ha il bell'effetto collaterale che è facile vedere i punti decisionali. Ma per quanto riguarda la creazione di un albero di ricerca per qualcosa di simile:
accLen([_|T],A,L) :- Anew is A+1, accLen(T,Anew,L).
accLen([],A,A).
In che modo l'assegnazione di Anew dovrebbe essere rappresentata nell'albero di ricerca? Non è un punto di decisione, il codice non ha altra scelta che assegnarlo 1 più il valore corrente di A. Lo posiziona ancora sul bordo, ma lo sottolinea o qualcosa del genere?