我了解以下内容:

[(+2),(+1)]<*>[1,2,3] == [3,4,5,2,3,4]

我也知道fmap被实现为map。但是我怎么能在脑海中映射这种计算呢?第一次看到此消息时,我假设以下内容:
[(*2),(+1)]<*>[1,2,3] == [4,5,6]

我第二次是关于:[[3,4,5],[2,3,4]]。但是另一方面,<*>返回f b,所以我知道这是不可能的。所以我的问题是,从中得出什么明智的心智步骤?

最佳答案

fs <*> xs或多或少是[f x | f <- fs, x <- xs]。 Monad具有Applicative实例

fM <*> xM = do
  f <- fM
  x <- xM
  return (f x)

这直接对应于列表理解。

10-08 04:57