gpt4 book ai didi

java - 为什么不能所有 Functor 都是 Monad?

转载 作者:行者123 更新时间:2023-12-01 16:43:21 25 4
gpt4 key购买 nike

据我所知,仿函数是那些具有 map() 的仿函数Monad 是那些也有 flatMap() 的单子(monad)。 。所有 Monad 都是 Functor,但反之则不然。是什么阻止仿函数实现 flatMap()并成为一个 Monad?是否有任何 Functor 由于某些限制而保持这种状态。您能否提供一些例子。谢谢。

最佳答案

声明所有 monad 都是仿函数意味着,仅使用 Monad 中的方法,我们就可以实现 Functor 中的方法。这确实可以做到,这就是为什么我们说所有的单子(monad)都是仿函数。我不知道 Vavr,但下面是 Haskell 中执行此操作的一些代码:

{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}

instance Monad m => Functor m where
fmap f x = x >>= (\x' -> return (f x'))

相比之下,语句所有仿函数都是 monad 意味着,仅使用 Functor 中的方法,我们就可以实现 Monad 中的方法。这是不可能的,因为你可以用 monad 做一些你不能用仿函数做的事情。所以我们说并非所有仿函数都是 monad。

关于java - 为什么不能所有 Functor 都是 Monad?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58196371/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com