大家好
我不明白为什么在导入Data.Char库后尝试导入模块时会出现此类错误? 实际上,当我删除模块测试时,一切正常运行
import Data.Char
module Test where
sayHello = putStrLn "Hello, world withoutCorona!"
lenVec3 x y z = sqrt ( x ^ 2 + y ^ 2 + z ^ 2 )
sign x = (if x > 0 then 1 else 0) + (if x < 0 then -1 else 0) + 0
twoDigits2Int x y = if isDigit x && isDigit y then digitToInt x * 10 + digitToInt y else 100
感谢
答案 0 :(得分:7)
导入在module
之后,而不是之前。 module Name where
应该是第一件事,可能仅在语言扩展和编译器标志之前:
module Test where
import Data.Char
答案 1 :(得分:3)
Haskell程序是一组模块。一个模块是structured gramatically as:
module -> module modid [exports] where body | body body -> { impdecls ; topdecls } | { impdecls } | { topdecls } modid -> conid impdecls -> impdecl1 ; … ; impdecln (n>=1) topdecls -> topdecl1 ; … ; topdecln (n>=1)
import
声明是此语法中的importdecls
,因此是body
的一部分。一个模块可以不存在module modid …
部分,但是如果我们定义一个模块标识符,则该在{> body
之前。
因此,您将这样的模块编写为:
module Test where
import Data.Char
-- …