diff options
author | Andy Wingo <wingo@pobox.com> | 2008-10-23 15:00:19 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2008-10-23 15:00:19 +0200 |
commit | 02e720ff76049e21c1206576442683818323d574 (patch) | |
tree | 0621430cd2c9865de306d8e2ce078319013a7588 /oop/goops.scm | |
parent | 56f952c682273594288dccc828afdc8ddc4ecf38 (diff) | |
download | guile-02e720ff76049e21c1206576442683818323d574.tar.gz |
method is a defmacro.
* oop/goops.scm (method): Make into a defmacro.
Diffstat (limited to 'oop/goops.scm')
-rw-r--r-- | oop/goops.scm | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/oop/goops.scm b/oop/goops.scm index bb85f1119..2a250c7fa 100644 --- a/oop/goops.scm +++ b/oop/goops.scm @@ -467,7 +467,7 @@ #:specializers specializers #:procedure procedure)) -(define method +(define-macro (method args . body) (letrec ((specializers (lambda (ls) (cond ((null? ls) (list (list 'quote '()))) @@ -482,16 +482,12 @@ (cons (if (pair? (car ls)) (caar ls) (car ls)) (formals (cdr ls))) ls)))) - (procedure->memoizing-macro - (lambda (exp env) - (let ((args (cadr exp)) - (body (cddr exp))) - `(make <method> - #:specializers (cons* ,@(specializers args)) - #:procedure (lambda ,(formals args) - ,@(if (null? body) - (list *unspecified*) - body)))))))) + `(make <method> + #:specializers (cons* ,@(specializers args)) + #:procedure (lambda ,(formals args) + ,@(if (null? body) + (list *unspecified*) + body))))) ;;; ;;; {add-method!} |