gpt4 book ai didi

haskell - 为什么这些函数中的一个会因类型错误而失败,而另一个却不会?

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

在 GHCi 中,如果我定义两个函数,如下所示:

> let succ = (+ 1)
> let pred = (- 1)

然后将它们都称为,如下所示:

> succ 5
> pred 5

为什么一个 (succ) 运行得很好,而另一个则失败并出现以下错误?

<interactive>:3:1:
Could not deduce (Num (a0 -> t))
arising from the ambiguity check for ‘it’
from the context (Num (a -> t), Num a)
bound by the inferred type for ‘it’: (Num (a -> t), Num a) => t
at <interactive>:3:1-6
The type variable ‘a0’ is ambiguous
When checking that ‘it’
has the inferred type ‘forall a t. (Num (a -> t), Num a) => t’
Probable cause: the inferred type is ambiguous

是什么导致类型推断在一个函数中失败,而在另一个函数中却失败?

最佳答案

- 在 Haskell 中有一个奇怪的特殊语法规则。它是唯一不能用作左中缀部分的中缀,相反 -x 将始终被解析为单个负数。该符号仅在以下情况下被识别为中缀

  • 明确用作减法,2-1
  • 用作右侧部分,(1-)
  • 用作二元前缀函数,(-) 1

关于haskell - 为什么这些函数中的一个会因类型错误而失败,而另一个却不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26920256/

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