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

Lisp Discussion :

cond et les tests avec clisp


Sujet :

Lisp

  1. #1
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut cond et les tests avec clisp
    Bonjour,

    Je n'ai pas du tout saisi le fonctionnement de clisp avec des conditions .
    (cond
    (bibi"1")
    ((not chibi) "2") # Comment dois-je considérer cette variable not chibi ?
    ((and z e) "3")
    ((or z e) "4") )

    1er test : (set 'bibi 'a) (set 'chibi nil) (set 'z 'z) (set 'e 'e) ;première clause - résultat "1" (set 'bibi 'a) donne a donc True .
    2ème test : (set 'bibi nil) (set 'chibi nil) (set 'z 'z) (set 'e 'e) ; deuxième clause - résultat "2"
    3ème test : (set 'bibi nil) (set 'chibi 'a) (set 'z 'z) (set 'e 'e); ; troisième clause - résultat "3"
    4ème test : (set 'bibi nil) (set 'chibi 'a) (set 'z 'z) (set 'e nil) ; quatrième clause - résultat "4"
    5ème test : (set 'bibi nil) (set 'chibi 'a) (set 'z nil) (set 'e nil) ; aucune des conditions n'est remplie

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 153
    Par défaut
    COND évalue l'une forme de test après l'autre jusqu'à ce qu'il en trouve une qui donne une valeur vrai, c'est-à-dire une valeur quelconque sauf NIL. L'ayant trouvée, COND évalue les formes de la clause correspondente.

    NOT est une fonction qui renvoie T si son argument est NIL et NIL autrement.

    Dans ton cas, si chibi est a, (not chibi) donne nil.

    Est-ce que c'est ce que tu voulais savoir?

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    De nos jours on n'emploie plus SET. L'operateur d'affectation universel c'est SETF:
    alors bibi sans guillemet.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 153
    Par défaut
    Common Lisp (abrégé CL) st le nom du dialecte dont GNU CLISP est une réalisation.

  4. #4
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Merci pour ses explications .Mais qu'est-ce qui se passerait si je ne fais pas les tests dans le même ordre ?
    Je débute avec le langage clisp , et j'ai pas saisi si NOT est un fonction , et ses arguments (tu as dit 2 nil) .........

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 153
    Par défaut
    Non, clisp n'est pas un langage. Le langage s'appelle Common Lisp (= CL). Clisp est en une réalisation, www.clisp.org. Mais ça n'a pas d'importance.

    > si je ne fais pas les tests dans le même ordre ?

    Comment ça ? COND les vérifie dans l'ordre dans lequel ils apparaissent. Si tu vas changer l'ordre des tests, l'ordre de l'exécution va changer aussi.

    Le premier élément de chaque clause n'est pas considéré comme le nom d'une variable, mais comme une expression qui est évaluée. Donc, si c'est le nom d'une variable, COND substitue sa valeur; si c'est l'appel d'une fonction, COND l'appelle, etc. Par exemple, le pseudocode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if a > b then
        do_something()
    elseif a < b - 1 then
        do_something_else()
    else
        default()
    endif
    équivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (cond ((> a b) (do-something))
          ((< (a (- b 1))) (do-something-else))
          (t (default)))
    > et j'ai pas saisi si NOT est un fonction , et ses arguments (tu as dit 2 nil) .........

    Maintenant je n'ai pas saisi, moi. Bien évidemment, NOT est une fonction. Elle accepte une argument et renvoie une valeur. Par example, (not 'a) donne NIL, (not t) donne NIL, (not 2) donne NIL, alors que (not nil) donne T.

  6. #6
    Membre très actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Par défaut
    Merci pour tes explications

Discussions similaires

  1. [PHPUnit] Développement piloté par les tests
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 12/11/2013, 13h19
  2. probleme avec les test avec mvn install
    Par chady dans le forum Maven
    Réponses: 2
    Dernier message: 21/10/2010, 12h01
  3. [Checkstyle] Contrôler les tests avec Checkstyle
    Par valkeke dans le forum Qualimétrie
    Réponses: 1
    Dernier message: 10/08/2010, 13h37
  4. Développement piloté par les tests avec PHPUnit
    Par Invité dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 18/11/2008, 19h53

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