是否有一个已经存在的实例,例如我在此blog post中找到的实例?
data Reader r a = Reader (r -> a)
instance Functor (Reader r) where
fmap f (Reader x) = Reader (f . x)
instance Applicative (Reader r) where
pure x = Reader $ pure x
(Reader f) <*> (Reader x) = Reader (f <*> x)
答案 0 :(得分:6)
是。当Applicative
本身在范围内时,(->) r
的实例也在范围内。 (对于您编写的代码甚至类型检查,情况必须如此 - 您是否注意到Applicative
的{{1}}实例刚刚发送到Reader
实例{ {1}}?=)