Common Lisp对象系统(CLOS)是否支持鸭子打字?

v_n*_*mad 4 lisp common-lisp

我正在阅读"Practical Common Lisp",我想知道Common Lisp是否支持像Duck这样的Duck-Typing?

在Ruby中,只要它实现一个带有调用者假定的名称和参数列表的方法,就可以在一个对象上调用一个方法,而不管它是什么类.

CLOS怎么样?是否可以在不考虑类的情况下调用对象,只需假设泛型函数可以处理它.也许不需要使用duck-typing,因为CLOS不遵循消息传递哲学,并且方法没有绑定到类.

Vse*_*kin 14

也许不需要使用duck-typing,因为CLOS不遵循消息传递哲学,并且方法没有绑定到类.

情况确实如此.每个泛型函数都可以动态地专用于某个类.还可以有默认实现.由于Lisp使用动态类型,因此可以使用任何类型的参数调用每个函数,对于泛型函数,基于参数类型的调度决策是在运行时获取的.