gpt4 book ai didi

haskell - 我如何让我的文字成为 haskell 中的数字

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

所以我是 Haskell 的新手,问题比比皆是。我已经阅读了几本书并尝试自己做一些事情,有人可以向我解释一下为什么这是在提示文字没有实现 eq,我理解为什么 eq 是必要的 - 但我不'不明白为什么这被视为文字而不是数字,也不明白我如何改变它。

generateListOfRandoms :: a -> b -> c -> d -> [(d, (a, b))]
generateListOfRandoms _ _ 0 _ = []
generateListOfRandoms rangeStart rangeEnd numberOfRandoms randGenerator =
(randGenerator, (rangeStart,rangeEnd)) : generateListOfRandoms rangeStart rangeEnd (numberOfRandoms-1) randGenerator

我确信当我尝试给它一个 IO 函数时,我的函数会以其他方式失败,正如你们中的一些人可能猜到的那样,但我现在很困惑为什么会收到此错误:

src\Main.hs:23:27:
No instance for (Eq c)
arising from the literal `0'
In the pattern: 0
In an equation for `generateListOfRandoms':
generateListOfRandoms _ _ 0 _ = []

最佳答案

如果使用数字文字,则相应参数的类型必须属于 Num 类。此外,由于您要针对数字文字进行模式匹配,因此您需要该类型属于 Eq 类。您必须将这些约束添加到您的类型签名中,

generateListOfRandoms :: (Num c, Eq c) => a -> b -> c -> d -> [(d, (a, b))]

如果您没有使用 GHC-7.4,Eq 约束是由 Num 约束隐含的,该约束最近已更改,因此现在您必须同时声明这两个约束如果您同时使用两者,请明确显示。

关于haskell - 我如何让我的文字成为 haskell 中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973514/

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