haskell - ((->) r) 在实例 Applicative ((->) r) 中是什么意思?
问题描述
instance Applicative ((->) r) where
这是 Haskell 中函数的 Applicative 类型类的实现。我真的不明白((->) r)
以及如何阅读它。
我认为这意味着它是一个接受一个参数并返回任何内容的函数(另一个柯里化函数,一个字符串),但我不确定,是否正确。那不是(r->)
解决方案
这里,->
是一个类型级别的运算符;它接受两种类型并返回一个新类型(函数类型)。在((->) r
中,它是部分应用的,因此您可以将其视为一个类型级函数,它采用一种类型a
并返回采用 ar
并返回 an的函数的类型a
。
((->) r) a == (->) r a -- function application is left-associative
== r -> a -- switch to infix notation
你可以说(r ->)
,除了 Haskell 不支持类型级别的部分。(而且我认为没有 GHC 扩展来启用这种支持。)
没有真正的好方法来阅读它,因为它存在于一个抽象级别,这个抽象级别没有被广泛讨论,不足以值得自然语言描述。