X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgacela_mobs.scm;fp=src%2Fgacela_mobs.scm;h=10123017a7f37c9c66cddf3228412f1f5afe51f0;hb=795a520a3cf53edb41e17986e93d6b258d97a2d8;hp=aeb65d96c5c6b9ccf63b1f4171b8089c4e4b0522;hpb=17e3503fa544aa84b99453b96afd2d9ff250bde9;p=gacela.git diff --git a/src/gacela_mobs.scm b/src/gacela_mobs.scm index aeb65d9..1012301 100755 --- a/src/gacela_mobs.scm +++ b/src/gacela_mobs.scm @@ -191,6 +191,17 @@ (lambda () (look attr)) (lambda (key . args) #f))))))))) +(define-macro (define-mob mob-head . body) + (let ((name (car mob-head)) (attr (cdr mob-head))) + `(define ,(string->symbol (string-concatenate (list "make-" (symbol->string name)))) + (lambda-mob ,attr ,@body)))) + +(define-macro (lambda-mob attr . body) + `(lambda () + (let ,(cons '(mob-id (gentemp)) attr) + (lambda () + ,@body)))) + (define (get-mob-attr mob var) (let ((value (assoc-ref (mob 'get-attr) var)))