为什么Haskell有类和继承

use*_*928 -3 haskell

Haskell的定义是函数式编程语言.

那么为什么在Haskell中有类和继承.

是不是OOP和FP同时这样?

如何使用函数式编程在Haskell或Javascript中创建多态性.

lef*_*out 10

你的前提在两个方向都存在缺陷:

  • 继承和OOP是两个几乎正交的概念.尽管继承与主流OO语言(特别是Java和C#)密切相关,但这些可能与原始精神不太相关.
    OO的真正含义是,不是直接操纵位于其他地方的状态,而是将"消息"发送给知道如何安全地执行此操作的对象.
    https://www.aomran.com/object-oriented-programming-is-not-about-objects/
    这并不以任何方式真正适用于Haskell,因为它没有可变状态开始.
  • Haskell没有Java风格的继承(子类型).它甚至没有Java风格的类:Haskell类是类型类,它们更多地与Java接口相对应.

  • 你不能.你可以做一些类似结果的事情,但这与你在这里提出的问题实际上是一个不同的问题(并且需要更详细的问题描述).不要编辑问题以完全不同的方向. (2认同)
  • @ user2693928这似乎是一个非常不同的问题(特别是因为它是关于JavaScript中的类,尽管有类似的名称,但几乎在所有方面都是与Haskell中的类型类完全不同的概念).如果您的目标是使用JavaScript中的类,那么在Haskell中学习类型类将无法帮助您实现这一目标(不是为了阻止您学习Haskell,只是因为它们*真的*不同而且类型类知识不会真正转移到JavaScript类). (2认同)