问题标签 [maybe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
881 浏览

haskell - 也许单子构造

我目前正在努力解决 Haskell 的一个新元素:Monads。因此,我通过创建一个运算符的示例来介绍这一点,该运算符仅在不等于时才(>>=)对类型执行函数(将其实际整数值作为参数) ,否则返回:MaybeNothingNothing

但是,我不太确定它的以下用法如何工作:

在我看来,(>>=)运算符只需要一个Maybe值和一个返回一个值的函数,但是在此示例使用代码中,它似乎需要 2 次Maybe值和一次函数。但是有人告诉我,它会评估x,将结果放入n,然后评估y,将结果放入y,然后safediv在两者上执行函数。虽然我看不到(>>=)运营商在这里是如何发挥作用的;这是如何运作的?

0 投票
1 回答
2209 浏览

swift - Swift 枚举中的默认初始化被忽略

我正在尝试Optional在 Swift 中重新实现。我正在调用它Maybe。我有 2 个 init,用于创建空版本或 nil 版本,一个拥有泛型类型:

但是,当我尝试创建一个 emptyMaybe时,init()不会调用初始化程序。相反,另一个init(_ something: T)是用 调用的T = ()

这是怎么回事?为什么没有参数的init被忽略?

0 投票
2 回答
334 浏览

haskell - Haskell:更好的写作方式可能是 Endo?

由于network-api-support包,我刚刚发现了 Endo 类型,并且我发现需要能够将 Maybe 值放入 Endo 中。因此,我编写了一个名为 MaybeEndo 的函数。这是一个使用它的例子:

令我印象深刻的是,这似乎应该已经封装到某种类型的模式中。

0 投票
2 回答
134 浏览

haskell - 为可能没有值的数据类型指定字段的正确方法是什么

我想指定一个自定义数据类型,如下所示:

现在,如果我不需要始终指定颜色怎么办。这是正确的方法吗?

这是应该在 Haskell 中完成的方式吗?有没有其他选择,以及这样做的缺点?到目前为止,东西编译了,但我处于学习曲线的开始,只找到一个用过的地方,没有任何说明后续函数如何处理这种情况。

例如,通过颜色等访问值,以及 Show 函数最终会得到很多“Just Red”等。

0 投票
1 回答
5182 浏览

haskell - 无法将预期类型“Int”与实际类型“m0 Int”匹配

我目前正在努力学习 Haskell。以下功能:

应该采用一个二维的双精度列表,表示一个矩阵,并确定哪一行在第一列中具有最大值。我知道有一些低效的部分,例如使用列表表示矩阵和使用转置,但我遇到的问题涉及以下编译器错误:

我不确定这m0意味着什么,但我认为它意味着单子。所以,我认为这意味着该函数正在返回一个单子 int。对于理解这个问题以及如何解决它的任何帮助将不胜感激。

谢谢。

0 投票
3 回答
232 浏览

haskell - 在 State Monad 中构建关于错误处理的最小 Haskell 示例

我正在绞尽脑汁想了解如何将Statemonad 与Maybe.

让我们从一个具体的(并且故意微不足道/不必要的)示例开始,在该示例中,我们使用Statemonad 来查找数字列表的总和:

凉爽的。

现在让我们对其进行修改,使其Nothing在列表包含数字时返回 a 0。换句话说,evalState addState' list应该返回Nothing(因为list包含 a 0)。我以为它可能看起来像这样......

...它有效,但我认为有更好的方法来做到这一点...

我玩过StateTMaybeT但我无法让他们工作。我看过一些关于 Monad 变换器的介绍,但它们要么没有涉及这个特定的组合(即 State + Maybe),要么示例太复杂以至于我无法理解。

TL;DR:StateT如果有人可以展示如何使用and MaybeT(两个示例)编写这段(诚然微不足道的)代码,我将不胜感激。(我假设不使用转换器就不可能编写此代码 - 这是不正确的吗?)

PS我的理解是,这StateT可能更适合这个例子,但从概念上看这两个例子会很有帮助,如果不是太麻烦的话。

更新:正如@Brenton Alker 所指出的,我上面的代码的第一个版本由于简单的错字(我缺少一个撇号)而不起作用。为了将问题集中在StateT/的使用上MaybeT,我正在更正上面的帖子。只是想包含这个注释来为他的帖子提供背景信息。

0 投票
5 回答
805 浏览

haskell - 空列表与可能表示 Haskell 中的计算失败

Edx Haskell 课程中,Erik Meijer 反复声明Maybe不应该使用该类型进行失败的计算。相反,应该为此使用空列表。

我的理解是Maybe类型是个好东西,我们应该使用它。然而,一个列表似乎可以模拟所有的东西,一个Maybe罐头模型等等……那么为什么我们需要这个Maybe类型呢?

0 投票
4 回答
1320 浏览

haskell - 在 Haskell 中返回某个类型的空对象

这是我正在尝试做的事情:

有任何想法吗?

0 投票
3 回答
8372 浏览

exception - Clojure 中的惯用错误处理

当我戴上 C 帽子时,我想也许惯用的 Clojure 只是做简单的事情并检查返回值。

当我戴上我的 Java 帽子(不情愿地,我必须补充一下)时,我对自己想,既然 Clojure 在 JVM 上运行,那么自然的方式必须是使用 JVM 异常。

当我戴上功能性帽子时,我在想一定有某种单子构造或线程宏可以以可组合的方式处理错误。

那么在 Clojure 程序中处理错误的惯用方法是什么?

0 投票
1 回答
150 浏览

scala - 我们可以根据 Maybe monad 或 Continuation monad 来理解 error monad 吗?

我正在查看以下用于处理Scala 中的错误的代码:

现在我可以在这里看到使用Clojure中的 Maybe Monad 处理异常的代码:

在这里,Jim Duey 解释了关于 continuation 的异常处理

(现在我知道所有单子在某种意义上都是延续- 我现在将把它放在一边。如果我犯了一个严重的错误 - 请帮助我,以便我可以纠正这个问题)。

我正试图围绕上面的这个 Scala 代码。我正在尝试确定它是基于Maybe还是基于Continuations。

我的问题是:我们可以根据 Maybe monad 或 Continuation monad 来理解 error monad 吗?