我试图理解Haskell中表达式const (++)
的类型。我知道const
和(++)
的个别类型,我知道您可以省略参数以返回部分应用的功能。Haskell中的常量类型(++)
如果我输入:t const (++)
,我会得到const (++) :: b -> [a] -> [a] -> [a]
。我认为(++)
需要两个列表(我知道但是Haskell中的所有函数都是curried函数,实际上只带一个参数)并返回一个列表。这个列表是const
函数的第一个参数,它等待另外一个参数。所以,我认为这种类型将是const (++) :: [a] -> [a] -> b -> [a].
但是,例如:const (++) 1 "hello" "you"
返回"helloyou"
。根据const
的定义const x _ = x
,如何从const
操作返回的东西不是第一个参数?在我的思考过程中,我的位置不正确?
*和*,'利弊t(++)1“hello”“you”'与'(((const(++))1)“hello”相同“)”you“与'((const(++)1 )“hello”)“you”与“((++)”hello)相同“)”you“是相同的就是'(++)”hello“”you“是”hello“+ +“你”。 –