Forum Programmation.autre Swi-prolog et gprolog

Posté par  (site web personnel) .
Étiquettes : aucune
0
7
jan.
2006
Bonjour, j'essaye de m'initier à prolog, en m'aidant de nombreux tutoriels disponibles sur le net.

Qu'il s'agisse de gprolog ou de swi-prolog, l'interpréteur en ligne ne me rend que des erreurs, c'est extrêmement frustrant.

Exemple :

SWI :

aime(moi, musique).
ERROR: Undefined procedure: aime/2


gprolog

| ?- aime(moi, musiq).
uncaught exception: error(existence_error(procedure,aime/2),top_level/0)


Je vous passe les tests avec du code plus complexe. C'est bien simple, aucun code vu dans les tutoriaux ne passent.

Y a t-il une explication ?
  • # swi-prolog

    Posté par  . Évalué à 3.

    Je ne connais pas gprolog mais son comportement doit être semblable à swipl.
    Soit tu édites ton code avec le logiciel de ton choix (emacs, vi...) puis charge le fichier .pro dans swipl en ligne de commande :


    # swipl -s mon_fichier.pro
    Welcome to SWI-Prolog (Multi-threaded, Version 5.4.7)

    ?- aime(moi, musique)
    [...]


    Soit tu souhaites ajouter des prédicats ou fait à la volée dans l'interprêteur (swipl) il te faut passer par assert :


    # swipl
    Welcome to SWI-Prolog (Multi-threaded, Version 5.4.7)

    ?- assert(aime(moi, musique))


    Dans le deuxième cas il te faudra utiliser retract si tu veux enlever des faits.

    Je te conseille la première méthode.
    • [^] # Re: swi-prolog

      Posté par  (site web personnel) . Évalué à 2.

      En gros je suis obligé d'utiliser le compilateur.

      Existe t-il un interpréteur, un vrai, un tout simple ? J'ai pas besoin d'une usine à gaz pour tester ce langage avec emacs et compagnie...

      On a l'impression que les interpréteurs n'existent plus de nos jours.

      « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

      • [^] # Re: swi-prolog

        Posté par  . Évalué à 4.

        Comme je l'ai expliqué dans la deuxième solution, c'est possible en utilisant assert.

        Ce n'est pas un question de compilation, swipl est un interprêteur, c'est une question de différencier l'appel et la définition des prédicats/faits.

        Je ne vois pas en quoi éditer son fichier à côté puis le charger fait une usine à gaz, mais enfin...


        #swipl
        [...]
        ?- assert(aime(moi, musique)).
        Yes
        ?- aime(X, musique).
        moi ;
        No

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.