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 :

Gel & Dégel d'un terme ?


Sujet :

Prolog

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Gel & Dégel d'un terme ?
    Bonsoir à tous,

    je vous expose mon problème. L'on m'a donné une source Prolog partiel permettant de geler et dégeler un terme. Code sans doute destiné à réaliser des opérations concurrentes ou alors traiter d'une façon particulière une opération récursive. Je ne sais pas trop encore vu que je ne comprend pas tout ce code...

    Mon souci est le suivant : plusieurs points de la syntaxe m'échappent et donc je suis incapable d'en comprendre le fonctionnement et mes multiples recherches sur internet n'ont rien donné

    Je viens donc ici avec l'espoir que quelqu'un peut m'éclairer.

    Voici le source :
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    %gel.pl
    %gel et degel d'un terme
     
    %clone/2
    %clone(X,Y):-assert('$tmp'(X)),retract('$tmp'(Y)).
     
    %gel/2
    gel(X,Y):-clone(X,Y),nbvars(X,0,N).
     
    %degel/2
    degel(X,Y):-degel(X,Y,Dico).
     
    %degel/3
    degel('$VAR'(N),X,Dico):-!,lookup(N,Dico,X).
    degel(X,Y,Dico):-atomic(X),!.
    degel(X,Y,Dico):-
    	nonvar(X), non atomic(X),
    	functor(X,F,N),
    	functor(Y,F,N),
    	degel(N,X,Y,Dico).
     
    %degel/4
    degel(N,X,Y,Dico):-
    	N>0,
    	arg(N,X,ArgX),
    	degel(ArgX,ArgY,Dico),
    	arg(N,Y,ArgY),
    	N1 is N-1,
    	degel(N1,X,Y,Dico).
    degel(0,X,Y,Dico).
     
    %lookup/3
    lookup(Cle,d(Cle,X,Droit,Gauche),Val):-!,X=Val.
    lookup(Cle,d(Cle1,X,Droit,Gauche),Val):-
    	Cle @< Cle1, !, lookup(Cle,Gauche,Val).
    lookup(Cle,d(Cle1,X,Droit,Gauche),Val):-
    	Cle @> Cle1, !, lookup(Cle,Droit,Val).
     
    %nbvars/3
    nbvars('$VAR'(N),N,N1):-N1 is N+1.
    nbvars(Terme,N1,N2):-
    	nonvar(Terme),
    	functor(Terme,F,N),
    	nbvars(0,N,Terme,N1,N2).
     
    %nbvars/5
    nbvars(N,N,Terme,N1,N1).
    nbvars(I,N,Terme,N1,N3):-
    	I<N,
    	I1 is I+1,
    	arg(I1,Terme,Arg),
    	nbvars(Arg,N1,N2),
    	nbvars(I1,N,Terme,N2,N3).
    la première chose qui me gène est '$tmp'(X) et '$VAR'(N).
    De plus ces 2 termes n'apparaissent pas dans la base de connaissance au listing, même après avoir fait plusieurs appels à clone(X,Y) par exemple.

    J'ai encore plusieurs questions que je poserai plus tard si vous etes inspirés par cette source ^^; , euh si dernière question pour ce post, à quoi peut bien servir la variable Y dans l'appel de clone(X,Y) ?


  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Re bonjour !
    Bon je revient après quelque jour d'absence.
    Et je vois que mon code n'inspire pas grand monde ...
    J'en vient a me demander si je cause chinois ou si c'est le code qui est du chinois ...

Discussions similaires

  1. set term ^
    Par tux dans le forum Débuter
    Réponses: 8
    Dernier message: 12/10/2004, 20h42
  2. Access me convient-il ? (limites et performances à terme)
    Par Marco le Pouillot dans le forum Access
    Réponses: 4
    Dernier message: 20/10/2003, 12h53
  3. traduction du terme "managed"
    Par sarasvati dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 14/05/2003, 23h01
  4. Réponses: 2
    Dernier message: 22/07/2002, 18h02

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