|
|
|
|
|
by kbp
2800 days ago
|
|
You can specialise generic functions on built-in classes in standard CL. Lisp
methods are specialisations of generic functions; they don't belong to a class
in the way methods do in eg C++. The issue you're talking about is that not
all functions are generic functions in Common Lisp, and you can't specialise
ordinary functions. There's nothing stopping you from doing (defmethod add ((x number) (y number)) (+ x y))
(defmethod add ((x string) (y string)) (concatenate 'string x y))
or whatever (multiple dispatch, too), and you could even call it + instead of
ADD if you wanted (but not COMMON-LISP:+, so other code would continue to
work; your packages could import your + instead of the standard one). |
|