[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CALL-NEXT-METHOD example
- To: LGD@SAIL.STANFORD.EDU
- Subject: CALL-NEXT-METHOD example
- From: Gregor.pa@Xerox.COM
- Date: Thu, 5 Nov 87 18:16 PST
- Cc: Common-Lisp-Object-System@SAIL.STANFORD.EDU
- Line-fold: no
Here is an example which could be used for the call-next-method section.
Its somewhat of a silly example, but I believe it captures several
important points about call-next-method. Namely its basic behavior, how
it defaults the argument when no arguments are passed, that it is a true
lexical function, and that it is possible to pass it arguments,
(defmethod collect (thing) thing)
(defmethod collect ((n number))
(let ((l ()))
(dotimes (i n)
(push (call-next-method) l))
(reverse l)))
(defmethod collect ((l list))
(mapcar #'call-next-method l))
(collect 5) ==> (5 5 5 5 5)
(collect '(a b c)) ==> (A B C)
;;; But note the following erroneous use of call-next-method.
;;; This example would cause an error to be signalled because
;;; the argument which is supplied to call-next-method would
;;; cause a different set of methods to be applicable.
(collect '(1 2 3))
-------