如何在common lisp中描述和实现和接口

 2022-01-07 

How to describe and implement and interface in common lisp

我正在实现一个图形数据结构,它将任意对象存储为顶点。我想为诸如获取对象的键之类的事情定义一个接口,以便所有顶点都可以有一个键。在我看来,这听起来像是我可能会使用 java.

之类的语言中的接口

1
2
3
4
interface Vertex {
  String key (Vertex v);
  // etc...
}

如何在普通 lisp 中模拟接口的行为?


正如 Rainer Joswig 在评论中提到的,在某些语言(例如 Java)使用它们的意义上,没有接口,因此您需要做的就是定义一些通用函数和可选的 mixin 类以指定为实现类的超类。