main 関数
💡 お知らせ: このドキュメントはAIによって翻訳されています。表現に違和感がある場合は、原文(英語)を参照するか、翻訳にご協力ください。
すべての Flix プログラムのエントリーポイント(Entry point)は main 関数です。main 関数は引数を取らず、Unit を返す必要があります:
def main(): Unit \ IO =
println("Hello World!")
main のエフェクト
main 関数では、次のものを自由に組み合わせて使うことができます:
- プリミティブエフェクト:
IOとNonDet。 - デフォルトハンドラを持つ任意のエフェクト: 例えば
Env、Exit、Clock、Loggerなど。
デフォルトハンドラを持つエフェクトは、Flix コンパイラによって自動的に IO へと変換されます。詳細はデフォルトハンドラを参照してください。
例えば、main では Env と Exit エフェクトを使うことができます:
use Sys.Env
use Sys.Exit
def main(): Unit \ {Env, Exit} =
let args = Env.getArgs();
match List.head(args) {
case None =>
println("Missing argument.");
Exit.exit(1)
case Some(a) =>
println("Hello ${a}!")
}
コマンドライン引数へのアクセス
プログラムに渡されたコマンドライン引数には、Env エフェクトを通じて Env.getArgs() を呼び出すことでアクセスできます:
use Sys.Env
def main(): Unit \ {Env, IO} =
let args = Env.getArgs();
println("Arguments: ${args}")
プログラムの終了
Exit.exit を使うと、特定の終了コード(Exit code)を指定してプログラムを終了できます:
use Sys.Exit
def main(): Unit \ Exit =
Exit.exit(0)
なぜ main はエフェクトを持たなければならないのか?
Flix は、main がエフェクトを持つことを要求します。もし main が純粋であれば、そのプログラムを実行する理由がないからです。通常、この要件は main がコンソールへ出力したり、その他の副作用を持つことで満たされます。