如何使用类型类来实现持久性、内省、标识、打印等,



在关于面向对象的神话的讨论中,Tim Sweeney描述了他认为是我们今天使用的包罗万象的框架的一个很好的替代方案。

他似乎对打字类最感兴趣:

我们可以使用像typeclass这样的构造来定义特性(比如持久性、内省等),身份、打印)与类和接口

我非常熟悉类型类作为"类型的类型",但我不确定它们将如何应用于前面提到的问题:持久性、打印。。。

有什么想法吗?

我的最佳猜测是通过默认方法重用代码,并通过从类型本身分离类型类实现来进行正交定义。

基本上,当您定义类型类时,您可以定义方法的默认实现。例如,Haskell中的Eq(相等)类将/=(不相等)定义为not (x == y),该方法默认情况下适用于该类型类的所有实现。在其他语言中,以类似的方式,您可以定义一个类型类,其中除了一个或两个方法之外,所有的持久性代码都已编写(SaveLoad)。或者,在一种具有良好反射能力的语言中,您可以提前定义所有的持久性方法。在实践中,它有点类似于多重继承。

现在,另一件事是,你不必在定义类型的同一个地方将类型类附加到你的类型上,你实际上可以稍后在不同的地方进行。这允许持久性逻辑与原始类型很好地分离。

在OOP语言中,我最喜欢的论文中有一些很好的例子:http://www.stefanwehr.de/publications/Wehr_JavaGI_generalized_interfaces_for_Java.pdf.它们对默认实现和追溯接口实现的描述本质上与我刚才描述的语言特性相同。

免责声明:我真的不认识Haskell,所以我可能在一些地方错了

最新更新