Javascript 与x27之间的差异;fmap&x27;和';平面图';,如果有的话

Javascript 与x27之间的差异;fmap&x27;和';平面图';,如果有的话,javascript,dictionary,functor,flatmap,Javascript,Dictionary,Functor,Flatmap,到目前为止,我找到的每个资源都比较map和flatMap。 这不是我的意图 在这段关于javascript函数编程的YouTube视频(特别是12:27左右)中,演讲者展示了一个fmap在Maybe函子上运行的示例。到目前为止一切都很好。让我困惑的是mjoin,而演讲者关于flatMap(而不是fmap)如何仅仅是fmap和mjoin的组合的评论 这让我感到困惑,因为到目前为止,我一直在交替使用fmap和flatMap这两个名称,尽管这个谈话暗示它们不是同一回事 对于一个具体的问题,我想知道这是

到目前为止,我找到的每个资源都比较map和flatMap。
这不是我的意图

在这段关于javascript函数编程的YouTube视频(特别是12:27左右)中,演讲者展示了一个
fmap
Maybe
函子上运行的示例。到目前为止一切都很好。让我困惑的是
mjoin
,而演讲者关于
flatMap
(而不是
fmap
)如何仅仅是
fmap
mjoin
的组合的评论

这让我感到困惑,因为到目前为止,我一直在交替使用
fmap
flatMap
这两个名称,尽管这个谈话暗示它们不是同一回事

对于一个具体的问题,我想知道这是否是特定于实现的,或者在函数编程的上下文中,
fmap
flatMap
实际上是两种不同的东西吗?如果它们不同,那么
fmap
中的
f
如果不是扁平的,代表什么

在我的脑海中它仍然是模糊的,但首先想到的是
flatMap
将映射到一个函子上,生成嵌套的函子,然后将其展平为一个函子(或至少向上一级)。相反,
fmap
的函数参数将返回单个函子,而不需要展平

也许我离得很近,或者很远。FP世界里有人愿意透露一些信息吗

上面提到的视频。

编辑 如果它们不同,则
fmap
中的
f
是否转换为函子映射?
最佳猜测。
虽然函子实现map,但从技术上讲,每个
map
都作用于某种类型的函子。

请清楚的朦胧的。大脑。

fmap
map
f
代表函子afaik。哈哈,所以我的第一句话是错的……是的!我在最后一秒得到了函子的灯泡时刻,检查编辑。尽管这仍然提出了一个问题,不是每个
map
方法都作用于某种函子吗?是的,函子必须实现
map
,这就是它们成为函子的原因。monad必须实现
flatMap
,这就是monad的本质。单子是一个函子。我猜
fmap
函子f=>(A->b)->fa->fb
)是在Haskell中被选中的,因为
map
(A->b)->[A]->[b]
)已经被选中了
flatMap
将函数映射到集合上,并将结果展平一级。这是一种实现单子合成运算符的方法。但无论如何,您应该坚持使用Javascript术语:
map
chain
fmap
map
f
代表函子afaik。哈哈,所以我的第一句话是错的……是的!我在最后一秒得到了函子的灯泡时刻,检查编辑。尽管这仍然提出了一个问题,不是每个
map
方法都作用于某种函子吗?是的,函子必须实现
map
,这就是它们成为函子的原因。monad必须实现
flatMap
,这就是monad的本质。单子是一个函子。我猜
fmap
函子f=>(A->b)->fa->fb
)是在Haskell中被选中的,因为
map
(A->b)->[A]->[b]
)已经被选中了
flatMap
将函数映射到集合上,并将结果展平一级。这是一种实现单子合成运算符的方法。但无论如何,您应该坚持使用Javascript术语:
map
chain