HaskellでHelloWorld

とりあえずお約束の「HelloWorld」から

main = putStrLn "Hello, World"

これを「hello.hs」ファイルの保存して、コマンドプロンプトで以下のコマンドを実行する。

> runghc hello.hs
Hello, World

これでHaskellインタープリターが起動して、スクリプトが実行される。

Haskellにはインタープリターの他にも、スクリプトコンパイルして実行ファイルにすることもできる。

> ghc hello.hs -o hello

hello.exeファイルが作成される。これでHaskellがインストールされていない環境でも実行できるようになる?
他にも対話型のインタープリターがある。


では、処理の内容を見ていく。

main = putStrLn "Hello, World"

putStrLnは引数で指定した文字列を出力する関数。
Haskellではこれを"Hello, World"文字列にputStrLn関数を適用するという。

そして、この式(結果ではない)をmain関数に代入する。Haskellではこれは関数ではなく「アクション」と呼ぶ。
プログラムが開始されるとmainアクションが実行される。いわゆるエントリーポイント。
このへんはC#PowershellPythonをやっていれば理解できる。これらの言語は関数(メソッド)もオブジェクトとして扱うからだ。

これをC#で書くとこんな感じだろうか、

MethodInvoker main = (MethodInvoker)delegate() {
    Console.WriteLine("Hello, World");
};
main();

Powershellだとこんな感じか、

& $main = { echo "Hello, World" }

ここまではわかる。