从当前工作目录导入模块

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.

Quote source

在你的情况下应该使用 Init.hs