【发布时间】:2014-07-30 09:37:57
【问题描述】:
在演讲和写作中,我一直想引用 monad 中的数据,但我不知道该怎么称呼它。
例如,在 Scala 中,传递给 flatMap 的函数的参数被绑定到......呃...... monad 中的那个东西。在:
List(1, 2, 3).flatMap(x => List(x, x))
x 被绑定到我无话可说的那个东西上。
有点复杂,传递给 Kleisli 箭头的参数不一定会绑定到 all monad 内的数据。对于 List、Set、Stream 和许多其他 monad,flatMap 多次调用 Kleisli 箭头,每次将 x 绑定到 monad 内的不同数据片段。或者甚至可能不是“数据”,只要遵循单子定律。不管它是什么,它都被包裹在 monad 中,flatMap 在没有包装器的情况下将它传递给您,也许一次一件。我只想知道如何称呼x 所指的相关的内部单子内容,至少部分是这样,这样我就可以停止使用所有这些笨拙的语言。
对于这个事物/数据/价值/东西/whatever-it-is,是否有一个标准或约定俗成的术语?
如果不是,那“糖果”呢?
【问题讨论】:
-
我一直听说它是 Monad 的“价值”,尽管我承认在谈论
Lists 和Sets 时这不太有意义。 -
同样以一种完全非标准的方式,我有时使用“基础值”,而不是“一元值”(和/或“函数值”)。实际上,“计算值”听起来不错。
-
如果我必须给它起个名字,我可能会称它为 monadic state(或 monad's state),例如
Maybe可以处于Just(并包含一个值)或Nothing状态,并且该状态是一元计算的结果。这解决了一点价值/数据的麻烦。但是,由于还有Statemonad,这可能有点令人困惑。备注:由于没有一个标准术语,我相信几乎所有的答案都会产生主要意见。 -
我会建议 monand 作为操作数,但这只是一个蓝天想法。否则,对于所有此类 -and 或 -andy 概念,我会坚持使用糖果。
-
让我缩小您的问题范围。如果在
M[T]M被称为“monad”,那你怎么指T?
标签: scala haskell functional-programming terminology monads