haskell 函数式编程中的接口

i2loujxw  于 2023-03-08  发布在  其他
关注(0)|答案(4)|浏览(122)

在java和c#中,我们有接口,在haskell这样的语言中,接口的等价物是什么?或者在函数式编程中,接口的概念叫什么?

irlmq6kh

irlmq6kh1#

正如其他人的回答所说,有类型类之类的东西,但更重要的是,有一个普遍存在的接口:* 一个函数 *。在很多地方,一个面向对象的程序需要一些定制的接口,一个类似的函数程序可以只使用一个函数。例如,haskell中的map f xs使用f,而一个面向对象的程序可能使用一个策略或任何东西来完成同样的任务。

qnyhuwrf

qnyhuwrf2#

Haskell typeclasses在面向对象语言中扮演着与接口相同的角色。

wdebmtf2

wdebmtf23#

函数签名(函数的输入和输出类型)沿着二阶函数(可以放入变量中的函数)承担了面向对象语言中接口的角色。只要函数签名与预期类型匹配,就可以用一个函数替换另一个函数。
例如,假设函数f有两个参数:一个整数a和一个函数g,其中函数参数g应该是一个接受int并返回str的函数:

fun f(a: int, g:int->str) -> int

通过声明参数g,您现在已经创建了一个接口,您可以为参数g传入任何与g签名匹配的函数。

1szpjjfi

1szpjjfi4#

Haskell中的datanewtype近似等于Java中的class
Haskell中的class近似等于Java中的interface

相关问题