gpt4 book ai didi

terminology - 术语 "monad"是否适用于 Maybe 或 List 等类型的值,还是仅适用于类型本身?

转载 作者:行者123 更新时间:2023-12-03 15:15:12 28 4
gpt4 key购买 nike

我注意到“monad”这个词的使用方式似乎有些不一致。我开始相信这是因为那里的许多(如果不是大多数)monad 教程是由刚刚开始自己​​弄清楚 monad 的人编写的(例如:核废料太空服卷饼),所以这个学期结束了变得有点重载/损坏。

特别是,我想知道术语“monad”是否可以应用于类型的单个值,如 Maybe、List 或 IO,或者术语“monad”是否真的应该只应用于类型本身。

这是一个微妙的区别,所以也许一个类比可能会更清楚。在数学中,我们有环、场、群等。这些术语适用于整个值集以及可以对它们执行的操作,而不是单个元素。例如,整数(连同加法、否定和乘法运算)形成一个环。你可以说“整数是一个环”,但你永远不会说“5 是一个环”。

那么,你能说“Just 5 是一个单子(monad)”,还是说“5 是一个环”是错误的?我不知道范畴论,但我的印象是说“Maybe 是一个单子(monad)”而不是“Just 5 是一个单子(monad)”才有意义。

最佳答案

“Monad”(和“Functor”)通常被误用作描述值。
没有值是 monad、functor、monoid、applicative functor 等。
只有类型和类型构造函数(更高级的类型)可以。
当你听到(你会听到)“列表是幺半群”或“函数是单子(monad)”等,或者“这个函数需要一个单子(monad)作为参数”时,不要相信它。
问演讲者“考虑到 Haskells 类对类型(包括高阶类)而不是值进行分类,任何值怎么可能是幺半群(或单子(monad)或……)?”
列表不是幺半群(等)。 List a是。

我的猜测是,这种流行的误用源于具有值(value)类而不是类型类的主流语言,因此习惯性的、无意识的值(value)类思维潜入其中。

为什么我们是否准确地使用语言很重要?
因为我们用语言思考,我们通过语言建立和传达理解。
所以为了有清晰的想法,有清晰的语言是有帮助的(或者能够随时)。

“我们语言的邋遢让我们更容易产生愚蠢的想法。关键是这个过程是可逆的。” - 乔治奥威尔,政治与英语

编辑:这些评论适用于 Haskell,而不适用于更一般的范畴论设置。

关于terminology - 术语 "monad"是否适用于 Maybe 或 List 等类型的值,还是仅适用于类型本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11067343/

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