gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 09:17:39 25 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

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 类型参数的函数并返回一个接受 r 类型参数的函数并返回 a 类型的值.
因为我们不知道 r 的类型正如我们所写pure , 我们只能给出一个函数,返回给 pure 的参数.

关于haskell - `pure x = (\_ -> x)` 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com