gpt4 book ai didi

oop - 如何使用类型类来实现持久性、内省(introspection)、身份、打印、

转载 作者:行者123 更新时间:2023-12-04 18:30:42 26 4
gpt4 key购买 nike

The Myths of Object-Orientation 的讨论中, Tim Sweeney describes他认为这是我们今天使用的无所不包框架的一个很好的替代方案。

他似乎对类型类最感兴趣:

we can use constructs like typeclasses to define features (like persistence, introspection, identity, printing) orthogonally to type constructs like classes and interfaces



我非常熟悉类型类作为“类型的类型”,但我不确定它们将如何应用于上述问题:持久性、打印、......

有任何想法吗?

最佳答案

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

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

现在,另一件事是您不必在定义类型的同一位置将类型类附加到您的类型,您实际上可以稍后在不同的位置执行此操作。这允许持久化逻辑与原始类型很好地分离。

我最喜欢的论文中有一些关于 OOP 语言的好例子:http://www.stefanwehr.de/publications/Wehr_JavaGI_generalized_interfaces_for_Java.pdf .他们对默认实现和追溯接口(interface)实现的描述与我刚才描述的语言特性基本相同。

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

关于oop - 如何使用类型类来实现持久性、内省(introspection)、身份、打印、,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com