Règles du forum

Le langage Prolog et sa sémantique seulement, pas les questions techniques liées à des interpréteurs en particulier. La référence est ici le Prolog de base et les clauses de Horn, sans tenir compte du standard ISO, car celui‑ci n’étant pas publiquement accessible, il ne peut pas constituer une base commune.

Auteur Message
Beau Parleur
Avatar de l’utilisateur
Bonjour,
En espérant avoir la possibilité de poster ici un nouveau sujet, de demande en aide.

J'étudie depuis une semaine le langage Prolog, et dans mon programme aujourd'hui, j'ai un problème d'affichage.

En effet des numéro précédé d'un _ s'affiche au lieu d'afficher les valeurs textuelle ou numérique, mais sans le underscore qui doit signifier une erreur de ma part.

A votre avis, ça peut venir de quoi ?

S'il vous plait.
Profil
Administrateur
Avatar de l’utilisateur
Je n’ai pas beaucoup connu Prolog, j’avais fait le miens, mais si tu poste un extrait, peut‑être que j’aurai une idée, ou alors je prendrai le temps de chercher.
Profil
Beau Parleur
Avatar de l’utilisateur
Bonjour Hibou,
J'ai oublié où j'en était hier.
Du coup ce matin, je suis allé à l'essentiel.
Et mon problème, finalement, et un problème de débutant.

Je n'arrive pas à faire une simple addition ou multiplication.
Si tu veux bien m'aider je suis preneur.

Voici mon code pour la multiplication:

Code : 

total(Q, P, T) :- T is P * Q.


Prolog me dit que Q n'est pas une fonction.
Citation : 
ERROR: is/2: Arithmetic: `'12'/0' is not a function


Merci pour ton aide.
Profil
Beau Parleur
Avatar de l’utilisateur
Yep, j'ai utiliser atom_number pour convertire P et Q avant d'appeler Total.
Et ça fait ma multiplication.

Merci quand même Hibou.
En te souhaitant une bonne continuation.
Profil
Beau Parleur
Avatar de l’utilisateur
Je reviens avec un autre problème, si tu as du temps Hibou.

J'ai fait les produits et je souhaiterais les ajouter dans une liste pour en faire les sommes.

J'ai donc un prédicat add_to pour ajouter un élément à une liste, mais qui ne fonctionne pas.

Code : 

add_to([], E, [E]).

add_to(L, E, [L, E]).


Tu peux m'aider ?

J'appelle add_to de la manière suivante :

Code : 

add_to(Sum, Total, Sum).


Et je comprends pas pourquoi "append/2" me me dis que mes éléments ne sont pas suffisemment instanciés lorsque je fais append(Sum, Total).
Profil
Beau Parleur
Avatar de l’utilisateur
J'ai dis n'importe quoi.
5Excusez moi, je dois être un peux trop spontané.
Profil
Administrateur
Avatar de l’utilisateur
Emmanuel Sens a écrit : 
[…]

Code : 

add_to([], E, [E]).

add_to(L, E, [L, E]).


Tu peux m'aider ?

J'appelle add_to de la manière suivante :

Code : 

add_to(Sum, Total, Sum).


[…]

D’après les deux règles en haut, add_to(Sum, Total, Sum) ne peut pas marcher, parce que le premier et le troisième arguments sont identiques, ce qui ne correspond à aucune des deux règles où le premier argument est toujours la queue du troisième.
Profil
Beau Parleur
Avatar de l’utilisateur
Bonjour, Bonjour Hibou.

Merci pour ton aide.

J'ai finalement réussi à faire mes sommes. En passant par un sacret bout de chemin de 3 jours à mettre du code dans tout les sens.

Ouf. Merci pour ton aide.
Profil