gpt4 book ai didi

haskell - Haskell 如何知道您指的是哪个类型类实例?

转载 作者:行者123 更新时间:2023-12-04 22:17:36 24 4
gpt4 key购买 nike

这个问题是在阅读优秀的 Learn You a Haskell 中关于应用仿函数的新章节时出现的。

Applicative 类型类具有,作为 Maybe 实例定义的一部分:

pure = Just

如果我只是去 GHCi 并导入 Control.Applicative,然后执行:
pure (3+)

我没有得到任何东西(有道理)。但是如果我在表达式的一部分中使用它:
pure (3+) <*> Just 4

我得到了 Just 7。我想这也不足为奇,但我缺少关于类型类如何工作的一些不可或缺的东西,我认为,这里对 pure 的调用没有歧义。

如果我的困惑是有道理的,谁能详细解释一下发生了什么?

最佳答案

这只是类型推断。 (<*>) 运算符需要两个参数才能使用相同的 Applicative 实例。右侧是 Maybe ,所以左侧也必须是 Maybe 。这就是它确定此处使用哪个实例的方式。您可以通过键入 :t expression 来查看解释器中任何表达式的类型,也许如果您只是查看每个子表达式并查看推断的类型,您将更好地了解正在发生的事情。

关于haskell - Haskell 如何知道您指的是哪个类型类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817466/

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