Prologue “ou” opérateur de requête
Je travaille sur quelques prologue que je suis nouveau.
Je suis à la recherche d'un opérateur "ou"
registered(X, Y), Y=ct101, Y=ct102, Y=ct103.
Voici ma requête. Ce que je veux écrire, c'est code:
"return X, étant donné que Y est égal à la valeur de Z OU de la valeur de Q OU de la valeur P"
Je demande le retour d'X si Y est égal à tous les 3. Quel est l'opérateur ou ici? Est-il un?
Vous devez vous connecter pour publier un commentaire.
vous pouvez invoquer' alternative liaisons sur
Y
de cette façon:Notez les parenthèses sont nécessaires pour garder la bonne exécution de flux de contrôle. Le
;
/2 c'est le généralor
de l'opérateur. Pour votre usage restreint, vous pourriez aussi bien le choix le plus idiomatiqueque sur les retours en arrière lie Y chaque membre de la liste.
modifier j'ai compris avec un retard de votre dernière exigence. Si vous voulez que Y match tous 3 valeurs de la ou est inapproprié, utiliser à la place
ou le plus compact
findall/3 construire la liste dans le même ordre d'enregistrement/de 2 réussit. Puis-je utiliser de sorte à assurer la correspondance.
setof/3 trie également les résultats de la liste
Juste un autre point de vue. Effectuer un "ou" dans le Prologue peut également être fait avec le "isolées" de l'opérateur ou un point-virgule:
Pour une explication plus complète:
Prédicat de contrôle en Prolog