Forum général.cherche-logiciel Interpréteur prolog.

Posté par  (site web personnel) .
Étiquettes : aucune
0
11
juin
2007
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.
  • # Interpréteur prolog.

    Posté par  (site web personnel) . É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.

    Adhérer à l'April, ça vous tente ?

    • [^] # Re: Interpréteur prolog.

      Posté par  . É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 :=)

      Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

      • [^] # Re: Interpréteur prolog.

        Posté par  (site web personnel) . É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

        Adhérer à l'April, ça vous tente ?

        • [^] # Re: Interpréteur prolog.

          Posté par  . É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).

          Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

          • [^] # Re: Interpréteur prolog.

            Posté par  (site web personnel) . É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  . É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...

              Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

              • [^] # Re: Interpréteur prolog.

                Posté par  (site web personnel) . É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...

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

          • [^] # Re: Interpréteur prolog.

            Posté par  . É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

            Only wimps use tape backup: real men just upload their important stuff on megaupload, and let the rest of the world ~~mirror~~ link to it

Suivre le flux des commentaires

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