Methods 与#x27;标准方法组合';和';简单方法组合';在CLOS中

Methods 与#x27;标准方法组合';和';简单方法组合';在CLOS中,methods,lisp,common-lisp,clos,method-combination,Methods,Lisp,Common Lisp,Clos,Method Combination,我一直在研究公共Lisp对象协议(CLOS),但遇到了一个疑问 有人知道CLOS中“标准方法组合”和“简单方法组合”的含义吗 在“简单方法组合”中,“列表”方法组合意味着什么 (defgeneric what-are-you? (obj) (:method-combination list :most-specific-last)) (defmethod what-are-you? list ((obj fixnum)) "I am a FIXNUM") (defmethod w

我一直在研究公共Lisp对象协议(CLOS),但遇到了一个疑问

有人知道CLOS中“标准方法组合”和“简单方法组合”的含义吗

在“简单方法组合”中,“列表”方法组合意味着什么

(defgeneric what-are-you? (obj)
   (:method-combination list :most-specific-last))

(defmethod what-are-you? list ((obj fixnum))
   "I am a FIXNUM")

(defmethod what-are-you? list ((obj float))
   "I am a FLOAT")

(defmethod what-are-you? list ((obj number))
   "I am a NUMBER")

CommonLisp附带了预定义的标准方法组合。这是默认值

此外,还有一系列所谓的“简单方法组合”:
+
附加
列表
最大值
最小值
NCOC
,以及
程序

请记住,方法组合会针对某一组参数查看哪些方法是适用的,然后将它们组合成一个有效的方法,并使用参数调用该方法

列表
方法组合组合组合了所有适用的主要方法(只有这些方法),并返回所有结果的列表

+
方法组合组合组合了所有适用的主要方法(只有这些方法),并返回所有结果的总和

等等