2010-01-11 1 views
2
(defspel game-action (command subj obj place &rest rest) 
    `(defspel ,command (subject object) 
    `(cond ((and (eq *location* ',',place) 
        (eq ',subject ',',subj) 
        (eq ',object ',',obj) 
        (have ',',subj)) 
      ,@',rest) 
      (t '(i cant ,',command like that.))))) 

Cest le code de http://www.lisperati.com/actions.html pour la 'macro définition macro'. Je n'arrive pas à le convertir correctement en schéma. Quelqu'un peut-il m'expliquer le processus de création de ce même genre de chose dans Scheme?PLT Scheme: Conversion de l'une des macros dans 'coulée Spels dans LISP'

Répondre

4

Ce genre de macro est en fait beaucoup plus simple dans le schéma, puisque vous pouvez tout faire avec define-syntax-rule (en code standard de schéma, vous aurez besoin define-syntax + syntax-rules). En gros, vous faites la même chose, moins tout le désordre de citation/unquote. voir le post sur la liste de diffusion -

(defspel (game-action command subj obj place rest ...) 
    (defspel (command subject object) 
    (cond [(and (eq? *location* 'place) 
       (eq? 'subject 'subj) 
       (eq? 'object 'obj) 
       (have 'subj)) 
      rest ...] 
      [else '(i cant command like that.)]))) 

Et PLT puisque c'est en fait la plupart du code, je le tout porté.

+0

Merci beaucoup!^_ ^ –

Questions connexes