为什么我不能导入模块?

时间:2020-04-09 21:17:37

标签: haskell


大家好

我不明白为什么在导入Data.Char库后尝试导入模块时会出现此类错误? 实际上,当我删除模块测试时,一切正常运行

enter image description here

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

感谢

2 个答案:

答案 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

-- …