2009-10-06 15 views
11

Perché questo non funziona L is [1,2,3,4] e questo funziona: L = [1,2,3]?Prolog è vs = con liste

Ma L is 1 e L = 1 funzionano entrambi allo stesso modo.

risposta

24

is deve essere utilizzato solo quando si valutano operazioni aritmetiche sul lato destro. cioè .:

X is 1 + 2 + 3 

is/2 valuta la struttura di destra come espressione aritmetica. Se non è un'espressione aritmetica valida o un numero, is/2 non riesce. Altrimenti, il numero al quale l'espressione aritmetica viene valutata viene unificato con il valore [presumibilmente] non associato a sinistra.