Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Haskell有类和继承_Haskell - Fatal编程技术网

为什么Haskell有类和继承

为什么Haskell有类和继承,haskell,Haskell,Haskell定义为函数式编程语言 那么为什么Haskell中有类和继承呢 这样,OOP和FP不是同时存在吗 如何通过函数式编程在Haskell或Javascript中创建多态性。您的前提在两个方面都有缺陷: 继承和OOP是两个几乎正交的概念。尽管继承与主流OO语言(特别是Java和C)有着密切的联系,但这些语言可能并不完全符合原始精神。OO的真正意义在于,与其直接操纵其他地方的状态,不如将“消息”发送给知道如何安全操作的对象。 这实际上并不适用于Haskell,因为它没有可变状态 Haske

Haskell定义为函数式编程语言

那么为什么Haskell中有类和继承呢

这样,OOP和FP不是同时存在吗


如何通过函数式编程在Haskell或Javascript中创建多态性。

您的前提在两个方面都有缺陷:

  • 继承和OOP是两个几乎正交的概念。尽管继承与主流OO语言(特别是Java和C)有着密切的联系,但这些语言可能并不完全符合原始精神。
    OO的真正意义在于,与其直接操纵其他地方的状态,不如将“消息”发送给知道如何安全操作的对象。

    这实际上并不适用于Haskell,因为它没有可变状态
  • Haskell没有Java风格的继承(子类型)。它甚至没有Java风格的类:Haskell类更像Java接口

Haskell没有继承权。类型类与类不同(事实上它更像是接口)。谢谢,您能提供相同的示例来说明如何在Haskell或Javascript中创建多态性(更好)。我不明白我是否有一些子类来重写父方法?此外,继承不是面向对象语言所必需的功能。我在“太宽泛”和“不清楚你在问什么”之间左右为难。这个问题需要做很多工作。@sandwood的人通常会问“我如何将feature-X翻译成Haskell?”而实际上他们应该问“我如何在Haskell中解决问题-Y,我在language-Z中使用feature-X?”如果你能正确识别问题-Y,大多数时候,您在language-Z中使用feature-X这一事实已不再相关。谢谢,但我如何创建多态方法呢。例如,有基类字段和子类TextField、SelectField和重写某些方法?您不能。你可以用类似的结果做一些事情,但这确实与你在这里提出的问题不同(需要更详细的问题描述)。不要将问题编辑成完全不同的方向。我问了,但没有人回答:@user2693928这似乎是一个非常不同的问题(特别是因为它是关于JavaScript中的类,尽管名称相似,但在几乎所有方面都与Haskell中的类型类是完全不同的概念)。如果您的目标是使用JavaScript中的类,那么在Haskell中学习类型类并不能帮助您实现这一目标(并不是要阻止您学习Haskell,只是它们确实不同,类型类知识不会真正转移到JavaScript类中)。