gpt4 book ai didi

Haskell 导入错误 : Not in scope

转载 作者:行者123 更新时间:2023-12-04 19:08:18 24 4
gpt4 key购买 nike

我写了这段代码:

import GHC.Float                                                                 

next :: GHC.Float -> GHC.Float-> GHC.Float
next n x = (x + n / x) / 2

我收到以下错误:
numerical.hs:3:9:
Not in scope: type constructor or class `GHC.Float'

numerical.hs:3:22:
Not in scope: type constructor or class `GHC.Float'

numerical.hs:3:34:
Not in scope: type constructor or class `GHC.Float'

模块导入没有任何问题,所以我不确定我是否用错误的名称引用它,或者标准 Float 模块是否与 IEEE GHC.Float 相同,并且不需要显式导入它。

我试着做一个 import GHC.Float as Fl没有成功——在 Fl 上出现相同类型的错误.

我刚刚开始 Haskell(显然),所以任何帮助表示赞赏!

最佳答案

您不必导入 GHC.Float手动,你可以写Float , 像这样

next :: Float -> Float -> Float
next n x = (x + n / x) / 2

GHC 隐式导入一个名为 Prelude 的模块在您拥有的每个源文件中。 Prelude包括许多方便的类型、函数和其他用作语言“内置”的东西。类型如 Int , Float , Maybe , IO , 以及 head 等函数, + , / , 和更多。

您可以使用函数 isIEEE 测试浮点数是否为 IEEE 浮点数。来自 GHC.Float模块:

import GHC.Float

main = do
putStr "1.0 is an IEEE floating point: "
print $ isIEEE (1.0 :: Float)

如果你运行它,它将打印 True
我还应该提到,您的代码没有更早编译的原因是因为当您导入一个仅使用 import 的模块时,它的一切都进入范围。您可以使用 import qualified 强制它进行限定。 ,这里有几个例子:

import GHC.Float -- Everything now in scope
import qualified Data.Maybe -- Have to use full name
import qualified Data.List as L -- aliased to L

main = do
-- Don't have to type GHC.Float.isIEEE
print $ isIEEE (1.0 :: Float)
-- Have to use full name
print $ Data.Maybe.isJust $ Nothing
-- Uses aliased name
print $ L.sort [1, 4, 2, 5, 3]

关于Haskell 导入错误 : Not in scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19031718/

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