Function 此haskell方法的声明

Function 此haskell方法的声明,function,haskell,declaration,Function,Haskell,Declaration,我试图理解Haskell,我有一个问题:这个函数的类型是什么,你怎么称呼它 two f(a,b) = f a b 例如,如果我们采用Int类型的参数,那么two的类型如下: two :: (Int -> Int -> Int) -> (Int, Int) -> Int two f (a,b) = f a b :t two two :: (t1 -> t2 -> t) -> (t1, t2) -> t 例如: two (*) (3,4) 12

我试图理解Haskell,我有一个问题:这个函数的类型是什么,你怎么称呼它

two f(a,b) = f a b

例如,如果我们采用
Int
类型的参数,那么
two
的类型如下:

two :: (Int -> Int -> Int) -> (Int, Int) -> Int
two f (a,b) = f a b
:t two
two :: (t1 -> t2 -> t) -> (t1, t2) -> t
例如:

two (*) (3,4)
12
说明:

您使用的函数包含两个参数
(Int->Int->Int)
和一个元组
(Int,Int)
,并将该函数应用于
a
b

当不受约束时,实际类型实际上如下所示:

two :: (Int -> Int -> Int) -> (Int, Int) -> Int
two f (a,b) = f a b
:t two
two :: (t1 -> t2 -> t) -> (t1, t2) -> t
例如,其他事情是可能的:

two (++) ("he","llo")
"hello"

(等等)

我不知道你在问什么。
(a,b)
是元组吗?问题是如何定义函数或函数的类型是什么?如何调用它?我想说未经批准的!是的,我想这是一个元组,我说的是两个:……我找到了!咖喱::(a,b)->c)->a->b->c咖喱f a b=f(a,b)未经加工::(a->b->c)->(a,b)->c)未经加工f(a,b)=fab@user3157778:您可以使用ghci的
:t
命令来查找推断出的函数类型,并且给定一种类型,您可以使用或Hayoo在stdlib中搜索类似的函数。
two
的类型显然不受
Int
的约束,这让人感到困惑。最好先介绍它的实际类型,然后在必要时使用
Int
提供一个具体的示例。如果是,则类型不受约束。我觉得
Int
的例子更容易理解。我会记得更清楚