问题标签 [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.
haskell - 使用 Haskell 的“Maybe”,类型声明 [初学者问题]
我已经开始尝试使用 Haskell 并且遇到了问题。qqq 是一个函数,如果用“Nothing”调用应该打印一个字符串,如果用“Just something”调用则打印其他东西。
第一次尝试似乎有效:
但:
- 当我试图
main = qqq (Nothing)
让它失败时(“约束中的模糊类型变量‘a0’:(显示a0)因使用‘qqq’而产生”) - 如果失败,我想添加类型签名时:
qqq :: Maybe x => x -> IO ()
->Type constructor 'Maybe' used as a class
-> 但不是吗?
qqq :: (Maybe x) -> IO ()
. 现在签名本身看起来成功了。但是main = qqq (Just 43)
开始失败并出现那个神秘(Show a0)
的错误,比如main = qqq (Nothing)
以防万一。
问题:
- 为什么用 qqq
Nothing
调用与用 调用如此不同Just 43
? - 是什么
(Show a0)
?它仅在错误消息中提及。任何使用它的尝试都会导致类似“显示不在范围内”的结果。 - 什么是正确的类型签名?如何制作它推导出的 Haskell 打印类型签名?期待类似的东西:
haskell - 编写此代码的更短方法
以下模式在 Haskell 代码中经常出现。有没有更短的写法?
functional-programming - 函数返回“No Solution”而不是“Nothing”
我有一个表示谓词逻辑公式的标准数据类型。表示析取的自然演绎消除规则的函数可能如下所示:
当统一失败时,该函数不会评估为 Nothing,而是在 中不返回任何解决方案PACKS
:
我错过了什么,为什么在统一失败时不el
评估?Nothing
haskell - 哈斯克尔初学者
我不明白为什么我会从 GHCi 得到以下回复。不是Maybe
构造函数吗?
c# - Maybe monad 如何起到短路的作用?
我正在尝试更深入地了解 Monads。因此,我开始深入研究 Maybe Monad。
有一件事我似乎没有做对。读这个:
“因此,Maybe Bind 起到了短路的作用。在任何一个操作链中,如果其中任何一个返回 Nothing,则评估将停止,整个链将返回 Nothing。”
来自: http: //mikehadlow.blogspot.com/2011/01/monads-in-c-5-maybe.html
还有这个:
“对于Maybe<T>
类型,绑定是根据简单的规则实现的:如果链在某个点返回一个空值,则链中的进一步步骤将被忽略,而是返回一个空值”
来自:“C# 中的函数式编程” http://www.amazon.com/Functional-Programming-Techniques-Projects-Programmer/dp/0470744588/
好的,让我们看一下代码。这是我的Maybe Monad:
这是我使用 monad 的示例代码:
很明显,我们正在尝试比可能更深入地挖掘节点树。但是,根据我提到的报价,我看不到它是如何运作的。我的意思是,我当然已经排除了空检查并且示例有效。然而,它并没有提前打破这个链条。如果设置断点,您将看到每个Bind()
操作都将被使用,因此没有最后一个操作的值。但这意味着,如果我深挖 20 层而实际上只下降了 3 层,我仍然会检查 20 层还是我错了?
将此与非单子方法进行比较:
这难道不应该叫短路吗?因为在这种情况下 if 真的在第一个值为 null 的级别中断。
有人可以帮我弄清楚吗?
更新
正如 Patrik 指出的那样,是的,即使我们只有 3 个级别并尝试深入 20 个级别,每个绑定都会被调用。但是,不会计算提供给 Bind() 调用的实际表达式。我们可以编辑示例以使效果更清晰:
haskell - 在 IO 中提取 Maybe 值
鉴于以下情况:
ghci给了我
当然,fromMaybe 工作正常:
但似乎正在执行 IO 操作,然后丢弃:
为什么会这样?有没有办法让 IO monad 更懒惰?
具体来说,考虑value :: IO (Maybe a)
到什么是(干净,简洁)的表达方式
并让它解包结果或相应地抛出一个 IOError ?
haskell - 在 Haskell 中合并/追加 Justs
我正在尝试做在 Haskell 中必须非常明显的事情,即 go fromJust [1]
和Just [2]
to Just [1, 2]
。但是我在网上找不到任何东西,因为我一直在寻找相关但无用的页面。那么,您如何实现这一目标?
java - 从 Java 访问 scala.None
如何scala.None
从 Java 访问?
最后一行导致编译器因“type scala.None 不带参数”而死机。
这失败了“找不到符号构造函数None()”:
这失败了“找不到符号变量无”:
在 2007 年,这曾经奏效,但后来 Scala 发生了变化。Java 编译器给出error: incompatible types
: