gpt4 book ai didi

haskell - 在 Haskell 中打印空列表

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

这是 Haskell 代码。我在下面找到了为什么我错了。

main = do
print [1] -- Okay
print [] -- error

错误字符串如下。

P07.hs:38:11: error: ? Ambiguous type variable ‘t0’ arising from a use of ‘print’ prevents the constraint ‘(Show t0)’ from being solved. Probable fix: use a type annotation to specify what ‘t0’ should be. These potential instances exist: instance Show Ordering -- Defined in ‘GHC.Show’ instance Show Integer -- Defined in ‘GHC.Show’ instance Show a => Show (Maybe a) -- Defined in ‘GHC.Show’ ...plus 22 others ...plus five instances involving out-of-scope types (use -fprint-potential-instances to see them all) ? In a stmt of a 'do' block: print [] In the expression: do { print [] } In an equation for ‘main’: main = do { print [] }

我试过[] :: Show不工作。我想我只是不知道这些错误意味着什么..请帮助我。谢谢。

最佳答案

Haskell 中的列表在其元素类型上是多态的,并且由于 [] 包含的信息不足,您必须通过显式给出类型注释 []::[Int] 来向 ghc 提供它 例如。

您收到的错误是由于列表的 Show 实例取决于其元素的 Show 实例,并且 ghc 无法确定它假设 ist 没有这样的实例。

现在您可能认为所有内容都可以转换为 String,但是您可以考虑 Int -> Int 并尝试

show [(+1)]

这将不起作用,因为 Haskell 中的函数没有默认的 Show 实例。

关于haskell - 在 Haskell 中打印空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38427242/

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