gpt4 book ai didi

Scala Functor 和 Monad 的区别

转载 作者:行者123 更新时间:2023-12-03 05:38:52 25 4
gpt4 key购买 nike

有人可以解释一下 Scala 上下文中 Functor 和 Monad 之间的区别吗?

最佳答案

Scala 本身并没有那么强调 Functor 和 Monad 术语。我猜使用 map 是仿函数端,使用 flatMap 是 Monad 端。

对于我来说,寻找和玩弄 scalaz迄今为止,这是在 scala 上下文(相对于 haskell 上下文)中了解这些函数概念的最佳途径。两年前,当我开始使用 scala 时,scalaz 代码对我来说是胡言乱语,然后几个月前,我再次开始寻找,我意识到它确实是那种特定风格的函数式编程的干净实现。

例如Monad实现表明 monad 是一个尖头 functor因为它扩展了 Pointed 特征(以及 Applicative 特征)。我邀请你去看一下代码。它在源代码本身中有链接,并且很容易跟踪链接。

所以仿函数更加通用。 Monad 提供了额外的功能。要了解当您有仿函数或 monad 时可以做什么,您可以查看 MA

您将看到需要隐式仿函数(特别是应用仿函数)的实用程序方法,例如 sequence 以及有时需要完整 monad 的方法,例如 replicateM

关于Scala Functor 和 Monad 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8460594/

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