从当前工作目录导入模块
Import module from the current working directory
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 变量的正确方法是什么?
模块名不应该以大写字母开头吗?
将 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所述:
Usually, the file should be named after the module name, replacing
dots in the module name by directory separators.
在你的情况下应该使用 Init.hs
。
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 变量的正确方法是什么?
模块名不应该以大写字母开头吗?
将 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所述:
Usually, the file should be named after the module name, replacing dots in the module name by directory separators.
在你的情况下应该使用 Init.hs
。