`pure x = (\_ -> x)` 是什么意思?

What is the meaning of `pure x = (\_ -> x)`?

我正在阅读 Applicative for functions 的实例, 遇到一行

instance Applicative ((->) r) where  
  pure x = (\_ -> x)  
  f <*> g = \x -> f x (g x)

我理解语法,但不理解第二行的意思。

我的理解是:部分应用函数 ((->) r) 获取一个值并将该值包装到上下文中,上下文包含始终 returns 该值的函数。

为什么它不只是通过对 x 应用部分应用的函数来计算结果,并且只有在那之后它才会将结果存储在应用上下文中?

函数实例的pure(<*>)的签名是

pure :: a -> ((->) r a)  
(<*>) :: ((->) r (a -> b)) -> ((->) r a) -> ((->) r b)  

将 (->) 写为中缀运算符给出

pure :: a -> (r -> a)  
(<*>) :: (r -> (a -> b)) -> (r -> a) -> (r -> a)

所以 pure 是一个接受类型 a 参数的函数,而 return 是一个接受类型 r 和 return 参数的函数s 类型为 a.
的值 由于我们在写pure的时候无法知道r的类型,所以我们只能给出一个函数,return给pure.

的参数