gpt4 book ai didi

haskell - 无法将预期类型与推断类型匹配,刚性类型变量错误

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

这个函数有什么问题吗?

test :: Show s => s
test = "asdasd"

String 是 Show 类的实例,因此它看起来是正确的。

错误是

src\Main.hs:224:7:
Couldn't match expected type `s' against inferred type `[Char]'
`s' is a rigid type variable bound by
the type signature for `test' at src\Main.hs:223:13
In the expression: "asdasd"
In the definition of `test': test = "asdasd"

最佳答案

test::Foo a => a 表示“对于作为 Foo 实例的任何类型,test 是该类型的值类型”。因此,在任何可以使用 X 类型的值(其中 X 是实例 Foo)的地方,您都可以使用 类型的值>Foo a => a

类似于 test::Num a => a; test = 42 有效,因为 42 可以是 IntIntegerFloat 类型的值或任何其他类型的实例数字

但是 "asdasd" 不能是 Int 或任何其他 Show 实例 - 它只能是字符串。因此,它与 Show s => s 类型不匹配。

关于haskell - 无法将预期类型与推断类型匹配,刚性类型变量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629883/

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