Javascript 与x27之间的差异;fmap&x27;和';平面图';,如果有的话
到目前为止,我找到的每个资源都比较map和flatMap。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这两个名称,尽管这个谈话暗示它们不是同一回事 对于一个具体的问题,我想知道这是
这不是我的意图 在这段关于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
。