J'ai une question avec un seul atome de citation. Alors que p == 'p' renvoie vrai, pourquoi p = \ '' p 'ne retourne pas false? cela me donne une erreur en disant que 'p' n'est pas une fonction.Pourquoi p = = 'p' retourne une erreur dans SWI-prolog?
2
A
Répondre
1
Parce que ==
checks term equality, tandis que =\=
checks arithmetical inequality. Être comme p
est pas un nombre, Prolog traite comme une expression arithmétique, en essayant de trouver sa valeur arithmétique:
1 ?- p == 'p'.
true.
2 ?- p =/= 'p'.
ERROR: Syntax error: Operator expected
ERROR: p
ERROR: ** here **
ERROR: =/= 'p' .
2 ?- p =\= 'p'.
ERROR: =\=/2: Arithmetic: `p/0' is not a function
3 ?-
@lurker Merci! Je l'ai réparé. – 921Kiyo