Haskell 不在范围内,但它被全名调用
一个简单的问题:Haskell 不在范围内,但它被全名调用,haskell,Haskell,一个简单的问题: case (HashMap.lookup "last" jsonObject) of (Just (String val)) -> Data.Text.IO.putStrLn val 它表示不在范围内:Data.Text.IO.putStrLn。这怎么可能呢?在Haskell源文件中,您还必须导入您希望使用的任何模块-仅以限定名称引用符号是不够的 所以加上 import qualified Data.Text.IO 到源文件的顶部。如果您还想直接引用putStrL
case (HashMap.lookup "last" jsonObject) of
(Just (String val)) -> Data.Text.IO.putStrLn val
它表示
不在范围内:Data.Text.IO.putStrLn
。这怎么可能呢?在Haskell源文件中,您还必须导入您希望使用的任何模块-仅以限定名称引用符号是不够的
所以加上
import qualified Data.Text.IO
到源文件的顶部。如果您还想直接引用putStrLn
,您可以省略qualified
关键字
在这种特殊情况下,您还需要在Prelude
中“隐藏”版本,因为putStrLn
是一个标准库函数
import Prelude hiding ( putStrLn )
请注意,可以在ghci提示符处直接引用符号,这可能是此处的一个混淆源。尽管ghci(而非ghc)将只访问名称用作名称限定符的任何模块。您也可以在此处使用限定导入。