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

Scheme Discussion :

Aide pour une macro "until"


Sujet :

Scheme

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Points : 122
    Points
    122
    Par défaut Aide pour une macro "until"
    Bonjour à vous !

    Je bosse sur un exo que j'aimerai bien comprendre : les macro en scheme

    Je veux faire une macro until que je puisse utiliser ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (let ((i 1))
    (until (> i 10)
    (write i)
    (set! i (* i 2))))
    J'ai fais ça, je veux seulement utiliser quasiquote ' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (define-macro (until test exp1 exp2)
    '(do ()
          (test)
         exp1 exp2))
    Vous l'aurez deviné, ça ne marche pas... Je ne suis pas du tout familier avec scheme, et même absolument pas, alors si vous pouvez me donner un coup de main et une explication, ça serait chouette !

    Merci !!!!

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Fused Voir le message
    Bonjour à vous !

    Je bosse sur un exo que j'aimerai bien comprendre : les macro en scheme

    Je veux faire une macro until que je puisse utiliser ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (let ((i 1))
    (until (> i 10)
    (write i)
    (set! i (* i 2))))
    J'ai fais ça, je veux seulement utiliser quasiquote ' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    (define-macro (until test exp1 exp2)
    '(do ()
          (test)
         exp1 exp2))
    Vous l'aurez deviné, ça ne marche pas... Je ne suis pas du tout familier avec scheme, et même absolument pas, alors si vous pouvez me donner un coup de main et une explication, ça serait chouette !

    Merci !!!!
    Absolument pas familier ? En fin de session ? Ça ne présage rien de bon ça pour ton examen final.

    Bon alors, voici comment on fait une macro.

    1. on écrit la manière dont on aimerait pouvoir utiliser la macro; tu l'as fait.
    2. on écrit en quoi elle devrait se transformer; tu ne l'as pas vraiment fait, mais presque. On va dire que c'est ce que tu as mis après le quote.
    3. on se rappelle comment s'évalue une macro et ce qu'elle doit retourner:
      • les arguments ne sont pas évalués: ce sont les identificateurs qui sont transmis aux paramètres formels de la macro
      • la macro doit construire et renvoyer une liste qui sera elle-même évaluée (à l'aide de eval)

    Tu as bien construit une liste, mais celle-ci à la sortie de ta macro sera toujours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (do ()
          (test)
         exp1 exp2))
    Il est donc bien possible que test, exp1 ou exp2 n'existent pas. Ça serait même étonnant du contraire. Pourquoi ? Parce que tu as construit ta liste avec un quote. Or je suis sûr que tu as vu d'autres exemples.

    Comprends-tu le problème ?

Discussions similaires

  1. [OpenOffice][Base de données] aide pour une macro sous openoffice
    Par micker dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 30/04/2009, 11h43
  2. Besoin d'aide pour une macro en visual basic
    Par raikkonen3 dans le forum VB.NET
    Réponses: 3
    Dernier message: 11/10/2008, 18h57
  3. Aide pour une macro mêlant Excel et Lotus!
    Par andyranai dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/05/2008, 09h25
  4. [VBA] Excell : demande d'aide pour une macro
    Par Fealendril dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/01/2006, 16h28

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