问题标签 [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 投票
2 回答
851 浏览

java - Maybes 是 scala 的好模式吗?

一段时间以来,我一直在努力将 scala 与可能返回 null 的 java 方法集成。我想出了以下实用程序,它有很大帮助:

我对这个解决方案有几个问题:

  1. 是否有更好或更标准的模式可供使用?
  2. 我是在复制已经存在的东西吗?
  3. 这个功能有隐藏的陷阱吗?
0 投票
3 回答
1465 浏览

haskell - Haskell 映射返回一个单子

Data.Map 和 Data.IntMap 中的查找函数当前返回带有类型签名的 Maybe 包装的值

它曾经有更一般的类型

我意识到前者可能会减少对额外类型规范的需求,但后者会使其更加通用并允许在列表推导中使用查找。有什么方法可以用新版本模仿这种行为,还是我必须使用旧版本的库?

0 投票
2 回答
815 浏览

haskell - 在 F# 中实现 Haskell-MaybeMonad - 我们如何才能变得如此懒惰?

我们正在尝试在 F# 中从http://www.haskell.org/all_about_monads/html/maybemonad.html构建 Haskell-MaybeMonad 示例。

这个想法是在两个字典中搜索一个邮件地址。如果两个查找之一返回结果,我们将查看第三个。

问题是即使第一次返回结果,我们也会执行第二次查找。Haskell 的好处就在这里,它评估惰性。现在我们在 F# 中寻找类似的东西。我们尝试了以下方法,但它看起来很难看,似乎打破了在构建器中封装可能逻辑的想法:

有更好的解决方案吗?

问候,叉子

0 投票
3 回答
359 浏览

types - Haskell - 使用 Just or no 只是有所作为,但我不知道为什么

我在“Real World Haskell”一书中找到了这样的代码,p68

我的问题是:Just数据构造函数做了什么工作?当我删除它时,我会收到类似的错误消息

但是当我尝试比较“Just”和“No Just”版本之间的类型差异时:

那么这里的关键点是什么?这是否意味着当我在节点中放置一个带有 type 的 var 时a,该函数不会输出一个带有 type 的节点a,所以会出错?

0 投票
2 回答
4718 浏览

haskell - 对包含“Just”的 Maybe 返回进行操作

我有一个返回类型为的函数Maybe ([(Int,Int)],(Int,Int))

我想从另一个函数调用它并对数据执行操作。

但是,返回值包含在Just. 第二种方法需要([(Int,Int)],(Int,Int)),因此不会接受Just ([(Int,Int)],(Int,Int))

Just在应用第二种方法之前,有没有办法可以修剪?

我不完全理解Justwithin的使用Maybe——但是,有人告诉我第一个 Method 的返回类型必须是Maybe.

0 投票
6 回答
43886 浏览

haskell - 在 Haskell 中使用 Maybe 类型

我正在尝试在 Haskell 中使用 Maybe 类型。我查找了返回可能的键值元组。如何访问由 Maybe 包装的数据?例如,我想将 Maybe 包含的整数与另一个整数相加。

0 投票
2 回答
7936 浏览

java - Haskell 中的 undefined 和 Java 中的 null 有什么区别?

两者都是类型是所有类型(无人居住)的交集的术语。两者都可以在代码中传递而不会失败,直到尝试评估它们。我能看到的唯一区别是,在 Java 中,有一个漏洞允许null对一个操作进行评估,即引用相等比较 ( ==)——而在 Haskellundefined中,根本无法在不抛出异常的情况下进行评估。这是唯一的区别吗?

编辑

对于这个问题,我真正想要解决的是,为什么null在 Java 中包含这样一个明显糟糕的决定,以及 Haskell 是如何逃避它的?在我看来,真正的问题是你可以做一些有用的事情null,即你可以检查它是否为。因为您可以这样做,所以在代码中传递空值并让它们指示“无结果”而不是“此程序中存在逻辑错误”已成为标准约定。而在 Haskell 中,没有办法检查一个术语是否在不评估它的情况下评估到底部并且程序爆炸,所以它永远不能以这种方式使用来表示“没有结果”。相反,人们被迫使用类似Maybe.

抱歉,如果我似乎对“评估”这个词玩得太快了……我试图在这里做一个类比,但很难准确地表达出来。我想这表明这个类比是不精确的。

0 投票
5 回答
41235 浏览

return-value - 如何在 Haskell 中获取 Maybe 的值

我对 Haskell 比较陌生,并开始阅读“Real World Haskell”。

我只是偶然发现了 Maybe 类型,并且有一个关于如何从Just 1例如接收实际值的问题。

我写了以下代码:

如果我使用,这很好用:

但是,例如,如果我将 1 更改为 String 它将不起作用。

我想我知道为什么:因为eliminate必须返回一种类型,在这种情况下,就是一个Int. 但是我该如何改变eliminate以至少处理字符串(或者可能处理所有类型)?

0 投票
4 回答
686 浏览

haskell - Haskell:catMaybe 用于 Data.Set?

您将如何为 Data.Set 实现 catMaybes ?

我想出了:

然后我得到以下

0 投票
7 回答
10329 浏览

functional-programming - 为什么在 Clojure 中对 Maybe/Option 的使用不那么普遍?

尽管 Clojure 如此强调函数范式,为什么不使用Maybe/ Optionmonad 来表示可选值?在 Scala 中使用Option非常普遍,这是一种我经常使用的函数式编程语言。