Math 这是什么类型的数学:a->;b->;C

Math 这是什么类型的数学:a->;b->;C,math,haskell,types,monads,Math,Haskell,Types,Monads,在查看Haskell时,我经常看到类似的类型声明: a -> (b -> c) 我知道它描述了一个函数,它接收a类型的内容并返回一个新函数,该函数接收b类型的内容并返回c类型的内容。我也知道类型是关联的(编辑:我错了,请看下面的注释),因此可以这样重写上面的内容以获得相同的结果: (a -> b) -> c 这将描述一个函数,它接收a型和b型的内容,并返回c型的内容 我还听说,您可以通过切换箭头对函数进行补充(编辑:真的,我在这里查找的单词是dual-请参见下面的注释

在查看Haskell时,我经常看到类似的类型声明:

a -> (b -> c)
我知道它描述了一个函数,它接收a类型的内容并返回一个新函数,该函数接收b类型的内容并返回c类型的内容。我也知道类型是关联的(编辑:我错了,请看下面的注释),因此可以这样重写上面的内容以获得相同的结果:

(a -> b) -> c
这将描述一个函数,它接收a型和b型的内容,并返回c型的内容

我还听说,您可以通过切换箭头对函数进行补充(编辑:真的,我在这里查找的单词是dual-请参见下面的注释):

a <- b <- c
但我不确定

我的问题是,这种数学叫什么?我想学习更多关于它的知识,这样我就可以用它来帮助我编写更好的程序。我感兴趣的是学习一些东西,比如什么是互补函数,以及可以对类型声明执行哪些其他转换


谢谢

从广义上讲,这属于法律范畴

因为这个符号与函数类型有关,所以您可能也感兴趣


(你对关联性的错误假设应该已经被其他答案充分澄清了,所以我不会再重复了)

类型为
a->b->c
的函数,它们实际上是你所说的函数链,是

在Haskell中是不等价的。这就是类型理论,它可以建立在范畴理论中

前者是采用
a
类型参数并返回
b->c
类型函数的函数。后者是以
a->b
类型的函数作为参数并返回
c
类型的值的函数


你所说的函数的补码是什么意思?
a->(b->c)
类型的函数的逆函数类型具有
(b->c)->a
类型声明是关联的,
a->(b->c)
不等同于
(a->b)->c
。此外,您不能“切换”箭头,
ab->c
被解释为
a->(b->c)

a->b->c
a->(b->c)
接受
a
并返回a(接受
b
并返回a
c
的函数),即它们接受两个参数
(a->b)->c
接受a(接受
a
并返回
b
的函数)并返回
c
,即它们接受一个参数。所以他们不是对等的!另外,函数的对偶概念来自于,这对函数程序员来说是有趣的、有趣的和启发性的。从我看的视频中我记错了。谢谢特别是,这是“类型化lambda演算”。在正则lambda演算中,只有一个“类型”。是的,它与范畴理论,特别是拓扑学理论有关。(这是因为在范畴理论中,对象和功能是分离的概念,但在拓扑学理论中,有一个“内部的”函数的概念。你可以指定并说我们使用的是笛卡尔封闭的类别。看起来我要找的单词是函数的“对偶”。我在上面的问题中做了一个注释,这样其他人就不会感到困惑了。
c -> b -> a
a -> (b -> c) 
(a -> b) -> c