Retourner aux forums || Retourner au forum general.cherche-logiciel

general.cherche-logiciel : Interpréteur prolog.

Posté par Ontologia (page perso, ) le 11 juin 2007
0
Bonjour,
je voudrai me mettre à prolog et en profiter pour apprendre ce langage à ma copine qui est linguiste de formation.

J'ai essayé rapidement swi-prolog et gprolog, et ces deux compilateurs m'obligent à mettre mon code dans un fichier, ce qui est pas pratique du tout quand on veut débuter et jouer avec des petits programmes de quelques lignes.

Par exemple, je voudrai lui faire rentrer :

parent(bob_senior,bob).
parent(bob,bob_junior).
parent(tres_vieux,vieux).
parent(vieux,jeune).
parent(jeune,tres_jeune).
parent(bob,bobby).

gp(X,Y) :- parent(X,Z),parent(Z,Y).

parent(X,Y).


tout cela en intéractif, et qu'il me réponde interractivement.
Un peu comme l'interpréteur Ocaml, ça serait parfait.

Est-ce que cela existe, ou est-ce possible avec l'existant ?

Merci.

> Lire le message (10 commentaires, moyenne: 2,4).  

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

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

Interpréteur prolog.

Posté par Pol' uX () le 11/06/2007 à 18:13. (lien). Évalué à 2.

Soit j'ai mal compris ta question, ou soit tu n'as pas essayé. ;-)

gprolog et swi-prolog *sont* des interpréteurs. Tu peux donc les démarrer, et faire joujou avec, en rentrant tes commandes.

--
Soutenez le logiciel libre, en adhérant dès maintenant à l'April
  • [^]Re: Interpréteur prolog.

    Posté par Farvardin (page perso, ) le 11/06/2007 à 21:31. (lien). Évalué à 3.

    Apparemment pas, malheureusement :

    http://gollem.science.uva.nl/SWI-Prolog/Manual/quickstart.ht(...)

    "After starting Prolog, one normally loads a program into it using consult/1,"

    http://www-ipst.u-strasbg.fr/pat/program/prolog/

    "Solution interactive : appeler pl, puis donner comme but : consult(nomfic). Ne pas oublier le point, il est inutile d'ajouter le .pl qui est ajouté par défaut au nom du fichier."

    dommage car si mes souvenirs sont bons, quand j'avais fait un peu de prolog à l'école, c'était justement en partie en mode interactif il me semble.

    Si cela t'intéresse Ontologia, je peux t'envoyer les programmes que l'on avait fait, je ne sais pas trop si cela sera compatible, en tout cas c'est dans le domaine qui t'intéresse puisque c'est de la linguistique (analyseur syntaxique, par exemple pour conjuguer un verbe dans différente langue (j'ai norvégien, polonais, italien...). Je peux également te passer arity prolog version dos, normalement c'est en interactif, par contre il faut configurer le clavier de dosbox en azerty :=)

    --
    You can't grep dead trees...
    • [^]Re: Interpréteur prolog.

      Posté par Pol' uX () le 11/06/2007 à 21:44. (lien). Évalué à 3.

      J'ai utilisé swi et gprolog pendant une année, il y a 2 ans, et c'était bel et bien un interpréteur.
      D'ailleurs on le voit très bien sur la page que tu cite ;-)
      Bien sûr, en usage normal tu charge un fichier ... pour ne pas tout reprendre à zéro à chaque fois.

      > Je peux également te passer arity prolog version dos
      tss tss ... on est sur linuxfr.org, et en plus c'est pas libre : http://www.arity.com/Prolog/aplic.htm

      --
      Soutenez le logiciel libre, en adhérant dès maintenant à l'April
      • [^]Re: Interpréteur prolog.

        Posté par Farvardin (page perso, ) le 11/06/2007 à 22:42. (lien). Évalué à 2.

        non, il n'est pas possible d'entrer des prédicats directement dans l'interpréteur (comme on pourrait le faire en python par exemple)


        ?- parent(bob_senior,bob).
        ERROR: Undefined procedure: parent/2
        ?-

        je constate également qu'il doit y avoir des différences d'un prolog à un autre, car les programmes que l'on faisait à l'époque (je ne sais plus quel programme, mais c'était sous mac), ne passent pas sous swi-prolog, mais passent avec ariti.

        Syntax error: Operator expected

        il bloque à ce passage :

        mot_lettres(X,X1):- % atome -> chaine
        not var(X),!,name(X,Codes),
        name1(Codes,X1).
        mot_lettres(X,X1) :- % chaine -> atome
        not var(X1), name1(Codes,X1),
        name(X,Codes).

        --
        You can't grep dead trees...
        • [^]Re: Interpréteur prolog.

          Posté par Amand Tihon (page perso, ) le 12/06/2007 à 06:29. (lien). Évalué à 4.

          non, il n'est pas possible d'entrer des prédicats directement dans l'interpréteur

          Et pourtant... Petit exemple avec gprolog :

          | ?- [user].
          compiling user for byte code...
          parent(bob_senior,bob).
          ^D

          | ?- parent(X,bob).
          X = bob_senior
          yes
          | ?-

          En espérant que ça aide.

          • [^]Re: Interpréteur prolog.

            Posté par Farvardin (page perso, ) le 12/06/2007 à 11:43. (lien). Évalué à 2.

            merci de l'info. C'est un peu déroutant comme comportement par rapport à Python. Et cela ne fonctionne que pour gprolog, pas pour swi-prolog.

            Bizarre aussi le coup du control + D.
            Si on attend cela n'aboutit pas apparemment.
            Si on le fait après [user]. il n'accepte pas parent(bob_senior,bob).
            Si on le fait après parent(bob_senior,bob). , on peut continuer mais la commande gp(X,Y) :- parent(X,Z),parent(Z,Y). ne semble pas fonctionner...

            --
            You can't grep dead trees...
            • [^]Re: Interpréteur prolog.

              Posté par Ontologia (page perso, ) le 12/06/2007 à 14:23. (lien). Évalué à 2.

              ça implique une autre question : peut-on faire du prolog méta, c'est à dire peut-on en cours de jeu poser de nouvelles règles qui seront récupérée en interrogant l'utilisateur ?

              A priori ça a été créé pour ça...

              • [^]Re: Interpréteur prolog.

                Posté par Pol' uX () le 12/06/2007 à 17:50. (lien). Évalué à 2.

                Oui, on peut.

                --
                Soutenez le logiciel libre, en adhérant dès maintenant à l'April
              • [^]Re: Interpréteur prolog.

                Posté par Farvardin (page perso, ) le 13/06/2007 à 21:19. (lien). Évalué à 2.

                sinon tuprolog semble fonctionner avec java web start, et permet d'exécuter facilement et directement des règles :

                http://www.alice.unibo.it/tuProlog/

                --
                You can't grep dead trees...
        • [^]Re: Interpréteur prolog.

          Posté par Farvardin (page perso, ) le 12/06/2007 à 22:37. (lien). Évalué à 2.

          je me répond à moi-même :

          certains prolog autorisent : not var(X),!,name(X,Codes) etc
          mais en swi-prolog ou gprolog, apparemment il faut écrire:
          not(var(X)),!,name(X,Codes) etc

          --
          You can't grep dead trees...

Revenir en haut de page || Retourner aux forums || Retourner au forum general.cherche-logiciel