gpt4 book ai didi

haskell - 为什么 Nothing == (pure Nothing) 在 Haskell 中返回 False?

转载 作者:行者123 更新时间:2023-12-02 02:20:22 25 4
gpt4 key购买 nike

似乎我理解错了,但我尝试了以下方法:

GHCi, version 8.6.5
Nothing == Nothing
=> True
Nothing == (pure Nothing)
=> False
pure Nothing
=> Nothing
你能解释一下这里发生了什么吗?

最佳答案

两个pure Nothing在您的代码中使用不同的 pure .
如果您检查 pure Nothing 的类型,可以看到pure的版本选择取决于类型 f .

GHCi> :t pure Nothing
pure Nothing :: Applicative f => f (Maybe a)
当您输入 pure Nothing在交互模式下, f推断为 IOIO 的结果打印操作。这是 GHCi 提供的快捷方式,在常规 Haskell 代码中不会发生。
GHCi> pure Nothing
Nothing
GHCi> pure Nothing :: IO (Maybe ())
Nothing
然而,当比较 pure NothingNothing , f推断为 Maybe .这将创建两层 Maybe , 使类型 Maybe (Maybe a)
GHCi> Nothing == pure Nothing
False
GHCi> Just Nothing == pure Nothing
True
GHCi> pure Nothing :: Maybe (Maybe ())
Just Nothing

关于haskell - 为什么 Nothing == (pure Nothing) 在 Haskell 中返回 False?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63248640/

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