IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Prolog Discussion :

Traitement des listes avec GNU Prolog pour Java


Sujet :

Prolog

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 29
    Points : 20
    Points
    20
    Par défaut Traitement des listes avec GNU Prolog pour Java
    Bonjour,

    Je débute avec Prolog et Java et je ne parviens pas à faire quelque chose des listes...

    Mon problème est le suivant : je crée une liste [1|4] et je demande à Prolog si 2 est membre de cette liste mais le moteur répond que non.

    De même, si je demande au moteur d'énumérer les éléments de la liste en faisant member(X,[1|4]), je n'obtiens aucune réponse.

    Voici mon code Java, j'imagine que je construis mal mes listes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    //Construction de la liste
    IntegerTerm terme = new IntegerTerm("2");
    		Term[] lesTermes = { new IntegerTerm("1"), new IntegerTerm("4")};
    		CompoundTerm listeDesTermes = new CompoundTerm(TermConstants.listTag, lesTermes);
     
    //Construction de la question
    Term[]argumentsQuestion = {terme,listeDesTermes};
    		CompoundTerm question = newCompoundTerm("member", argumentsQuestion);
     
    //Execution de la question
    // Execution d'une requête sans variable
    		Goal goal = interpreter.prepareGoal(question);
    		try {
    			int rc = interpreter.execute(goal);
    			System.out.println("Evaluation de "+question.toString()+" : "+rc);
    			if ((rc == PrologCode.SUCCESS) || (rc == PrologCode.SUCCESS_LAST)) {
    				return "yes";
    			}
    		} catch (PrologException e) {
    			e.printStackTrace();
    		}
    		return "no";
    Merci d'avance de votre aide !

  2. #2
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Je ne connais pas du tout l'interface Java - GNU Prolog.
    Ce que je peux dire c'est que [1|4] n'est pas une "vraie" liste, c'est [1,4] qui en est une vraie :
    ?- member(X, [1|4]).

    X = 1 ? ;

    (16 ms) no
    | ?- member(X, [1,4]).

    X = 1 ? ;

    X = 4 ? ;

    no
    En Prolog les listes se définissent par
    Liste :== []
    Liste :== [Elem | Liste]
    La notation [Tete | Queue] est l' analogue de car cdr en Lisp
    Sous la forme [H|T] la liste [1,4] s'écrit [1 | [4]]

Discussions similaires

  1. Traitement des formulaires avec prolog
    Par salah001 dans le forum Prolog
    Réponses: 2
    Dernier message: 18/03/2015, 20h40
  2. Traitement des erreurs avec Tomcat
    Par ingdev dans le forum Tomcat et TomEE
    Réponses: 11
    Dernier message: 14/01/2009, 17h55
  3. traitement des dates avec java
    Par papoulouis dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 04/10/2008, 12h08
  4. [Xpath] Eviter le traitement des noeud avec même attribut
    Par kkwet30 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 08/02/2008, 15h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo