使用合成时如何避免“'main'未在模块'Main'中定义”
How to avoid "‘main’ is not defined in module ‘Main’" when using syntastic
我正在尝试在 Haskell 中编写一个模块。它没有 main
因为它不是一个独立的程序。
我刚开始使用 syntastic,它一直在报告:
The IO action ‘main’ is not defined in module ‘Main’
这会阻止它报告我的模块中的其他实际错误。如果我尝试通过添加虚拟 main 来解决此问题,它会开始抱怨其他一切都是 "Defined but not used".
我如何告诉 syntastic(以及它在幕后使用的任何检查器)不应该有 main
?
使用 ghc-mod
进行测试(它支持 syntastic,尽管 hdevtools 也是可能的):
$ cat test1.hs
f :: Int -> Int
f x = x + 1
$ ghc-mod check test.hs
test1.hs:1:1:The IO action 'main' is not defined in module 'Main'
$ cat test2.hs
module Test where
f :: Int -> Int
f x = x + 1
$ ghc-mod check test.hs
$
因此,您只需在文件中放置一个虚拟的 module 声明,警告就会消失。
弹出此警告的原因是因为默认情况下 Haskell 中任何未声明的 module 都具有名称 Main
。由于您尚未定义 main :: IO ()
并且 module 名称是隐含的 Main
ghc-mod 会引发警告。如果你声明它不是 Main
,ghc-mod 认为你只是导出 module 中的所有内容,因为所有内容都是从 mod 隐式导出的乌尔.
虽然回答晚了,但为了完成添加以下内容将停止警告。
main :: IO ()
main = return ()
我正在尝试在 Haskell 中编写一个模块。它没有 main
因为它不是一个独立的程序。
我刚开始使用 syntastic,它一直在报告:
The IO action ‘main’ is not defined in module ‘Main’
这会阻止它报告我的模块中的其他实际错误。如果我尝试通过添加虚拟 main 来解决此问题,它会开始抱怨其他一切都是 "Defined but not used".
我如何告诉 syntastic(以及它在幕后使用的任何检查器)不应该有 main
?
使用 ghc-mod
进行测试(它支持 syntastic,尽管 hdevtools 也是可能的):
$ cat test1.hs
f :: Int -> Int
f x = x + 1
$ ghc-mod check test.hs
test1.hs:1:1:The IO action 'main' is not defined in module 'Main'
$ cat test2.hs
module Test where
f :: Int -> Int
f x = x + 1
$ ghc-mod check test.hs
$
因此,您只需在文件中放置一个虚拟的 module 声明,警告就会消失。
弹出此警告的原因是因为默认情况下 Haskell 中任何未声明的 module 都具有名称 Main
。由于您尚未定义 main :: IO ()
并且 module 名称是隐含的 Main
ghc-mod 会引发警告。如果你声明它不是 Main
,ghc-mod 认为你只是导出 module 中的所有内容,因为所有内容都是从 mod 隐式导出的乌尔.
虽然回答晚了,但为了完成添加以下内容将停止警告。
main :: IO ()
main = return ()