Haskell “a-”型是什么意思;我住在哈斯克尔?

Haskell “a-”型是什么意思;我住在哈斯克尔?,haskell,Haskell,示例-来自Haskell基本模块的函数runKleisli newtype Kleisli m a b = Kleisli { runKleisli :: a -> m b } 这意味着runKleisli有一个类型为a的参数,并且必须返回函数m,该函数有一个参数b?这意味着m是一种*->*类型;也就是说,m是一个接受单个参数的类型构造函数,比如Maybe或任一字符串。当您实例化Kleisli并自己执行替换时,您可以看到这是如何实现的 例如,考虑一些类似于 KasLi的字符串整数< /代

示例-来自Haskell基本模块的函数
runKleisli

newtype Kleisli m a b = Kleisli { runKleisli :: a -> m b }

这意味着
runKleisli
有一个类型为
a
的参数,并且必须返回函数
m
,该函数有一个参数
b

这意味着
m
是一种
*->*
类型;也就是说,
m
是一个接受单个参数的类型构造函数,比如
Maybe
任一字符串
。当您实例化
Kleisli
并自己执行替换时,您可以看到这是如何实现的

例如,考虑一些类似于<代码> KasLi的字符串整数< /代码>。

runKleisli
的替代类型将是
String->Maybe Integer
,您可以看到
m
如何被用作类型构造函数


有关Haskell中种类的更多信息,请参见。

它意味着
m
是种类的一种
*->*
;也就是说,
m
是一个接受单个参数的类型构造函数,比如
Maybe
任一字符串
。当您实例化
Kleisli
并自己执行替换时,您可以看到这是如何实现的

例如,考虑一些类似于<代码> KasLi的字符串整数< /代码>。

runKleisli
的替代类型将是
String->Maybe Integer
,您可以看到
m
如何被用作类型构造函数


有关Haskell中种类的更多信息,请参阅。

它意味着
m
是种类的一种
*->*
;也就是说,<代码> M < /C>是一个类型的构造函数,它接受一个参数,如<代码>可能> /Cube >或<代码>字符串。谢谢,你可以把它作为答案来发布,我会接受ITIt类似于泛型如何在java或C++中工作,或者模板如何在C++中工作。例如,在Java中,函数的签名类似于
M runKleisli(A)
。但这并不是一个精确的类比,因为您提供的Haskell签名比我提供的Java签名更为通用。这意味着
m
是一种
*->*
;也就是说,<代码> M < /C>是一个类型的构造函数,它接受一个参数,如<代码>可能> /Cube >或<代码>字符串。谢谢,你可以把它作为答案来发布,我会接受ITIt类似于泛型如何在java或C++中工作,或者模板如何在C++中工作。例如,在Java中,函数的签名类似于
M runKleisli(A)
。但这不是一个精确的类比,因为您提供的Haskell签名比我提供的Java签名更通用。我只是发现我不太明白,我现在还不知道monads,所以您能回答吗,函数
m
必须返回或接受类型为
b
?此函数上下文中的问题
(*>):(a->mb)->(b->mc)->(a->mc)
from)@bjornmelgaard
m
不一定是函数;它只是一个类型构造函数。在我在回答中给出的示例中,
Kleisli-Maybe-String-Integer
只是
String->Maybe-Integer
的简单包装。不多不少。该示例中的
m
可能
,这显然不是一个函数。好的,
mb
表示构造函数和唯一的构造函数(?)。因此,在
类类别cat中,其中\id::cat a \(>>)::cat a b->cat b c->cat a c
cat是一个构造函数,也是唯一一个也有2个参数的构造函数?@bjornmelgaard两者都不是。当您编写
Maybe Integer
时,是否
Maybe
返回或接受类型为
Integer
的内容作为参数?回答:这个问题毫无意义,因为
可能
不是一个函数。我只是发现我不太明白,我现在还不知道单子,所以你能回答吗,函数
m
必须返回或接受类型为
b
的参数?这个函数上下文中的问题
(*>):(a->mb)->(b->mc)->(a->mc)
from)@bjornmelgaard
m
不一定是一个函数;它只是一个类型构造函数。在我在回答中给出的示例中,
Kleisli-Maybe-String-Integer
只是
String->Maybe-Integer
的简单包装。不多不少。该示例中的
m
可能
,这显然不是一个函数。好的,
mb
表示构造函数和唯一的构造函数(?)。因此,在
类类别cat中,其中\id::cat a \(>>)::cat a b->cat b c->cat a c
cat是一个构造函数,也是唯一一个也有2个参数的构造函数?@bjornmelgaard两者都不是。当您编写
Maybe Integer
时,是否
Maybe
返回或接受类型为
Integer
的内容作为参数?回答:这个问题毫无意义,因为
可能
不是一个函数。