Haskellでモジュールを書こうとしています。スタンドアロンのプログラムではないため、main
はありません。
私はsyntasticを使い始めたばかりで、常にレポートしています:
The IO action ‘main’ is not defined in module ‘Main’
これにより、モジュール内の他の実際のエラーが報告されなくなります。ダミーのメインを追加してこれを回避しようとすると、他のすべてが「定義されているが使用されていない」という不満が出始めます。
main
がないはずであることをsyntastic(およびそれがカバーの下で使用しているチェッカー)にどのように伝えることができますか?
_ghc-mod
_を使用したテスト(hdevtoolsも可能ですが、syntasticをサポートします):
_$ 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
$
_
したがって、ファイルにダミーのモジュール宣言を置くだけで、警告は消えます。
この警告がポップアップする理由は、Haskellではデフォルトで宣言されていないモジュールの名前がMain
であるためです。 main :: IO ()
を定義しておらず、モジュール名が暗黙的にMain
であるため、ghc-modは警告をスローします。 Main
以外のものとして宣言すると、ghc-modは、モジュールからすべてが暗黙的にエクスポートされるため、モジュール内のすべてをエクスポートしていると見なします。
回答は遅いですが、完了のために以下を追加すると警告が停止します。
main :: IO ()
main = return ()