init.hs
库模块有,
module init where
data Suite = Clubs | Diamonds | Hearts | Spades deriving (Eq,Ord,Enum,Show)
main.hs,入口模块有,
module Main where
import init
main = do
print (fromEnum Clubs)
两个模块都在同一目录中,目录不是cabal路径的一部分。
在执行runhaskell main.hs
时,它会将错误抛出为main.hs:2:8: parse error on input ‘init’
。
在不污染全局PATH / CABAL变量的情况下,在当前工作目录中导入模块的正确方法是什么?
答案 0 :(得分:7)
不应该以大写字母开头的模块名称吗?
将init
替换为Init
:
module Init where
data Suite = Clubs | Diamonds | Hearts | Spades deriving (Eq,Ord,Enum,Show)
module Main where
import Init
main = do
print (fromEnum Clubs)
修改强>
如ØrjanJohansen所述:
通常,文件应以模块名称命名,替换 目录分隔符在模块名称中的点。
在您的情况下,应使用Init.hs
。