【发布时间】:2015-01-02 02:29:21
【问题描述】:
我正在 Brent Yorgey 的 2013 年 UPenn lecture 中进行练习以实施 mapA。
mapA :: Applicative f => (a -> f b) -> ([a] -> f [b])
我正在尝试获得对这个函数的直觉。这个功能有什么用?我不是在质疑它的实用性——只是想理解它。
此外,我正在寻找从 a -> f b 到 [a] -> f [b] 的提示。
【问题讨论】:
-
您同意
mapM有用吗?我认为很明显,“对集合的每个元素执行此操作”是一个无处不在的概念。这就是mapM/A。mapA是mapM用于应用程序。由于并非每个 Applicative 都是 Monad,因此您有时可能需要一个“形状”为mapM的函数,它只需要 Applicative 约束。因此,mapA. -
mapA f = dist . map f,其中dist来自您的question。 -
你也可以在
Data.Traversable的列表实例中找到这个函数的实现 -
The essence of the iterator pattern 描述成语的几种用途,使用更通用的
traverse函数。
标签: haskell