【发布时间】:2018-05-03 07:04:20
【问题描述】:
我正在阅读 Applicative 的函数实例, 遇到了一行
instance Applicative ((->) r) where
pure x = (\_ -> x)
f <*> g = \x -> f x (g x)
语法我懂,但是第二行的意思不明白。
我的理解是:部分应用函数((->) r) 获取一个值并将该值包装到上下文中,其中包含始终返回该值的函数。
为什么它不只是通过将部分应用的函数应用于 x 来计算结果,然后才将结果存储在 Applicative 上下文中?
【问题讨论】:
-
如果写成
pure x r = x ; (f <*> g) r = (f r) (g r)会更清楚,不是吗?
标签: haskell types semantics typeclass