インストール

とりあえず入門?とか?
書いてみる?

とりあえずインストールから。

haskellの実装はなんかGHCHugsというのが二強らしい。
個人的にはGHCを愛用中。

GHC

GHCは多分事実上の標準で、大体の解説サイトはこれかHugs
とりあえずGHC入れときゃ問題ないと思います。
ネイティブへのコンパイル可能で、かつ、インタプリタのGHCiもある。
ちなみに、GHCのGはGNUのGではないのです。
Glasgow Haskell Comoilerでございます。


オフィシャルはここ
たしかGHCコンパイルGHC自身がいる、とか、鶏か卵システムなんで、とりあえずコンパイル済みを。
で、他人がコンパイルしたバイナリなんて*1、という方はさらにソースを落としてコンパイルしてください。
あと、Linuxとかだとパッケージが用意されているんでそっちを使ってもいいかも。
ただ、6.8ぐらいからデバッグ機能とかついたっぽいんで、オフィシャルから最新拾ってきた方がいいカモ。


DLはオフィシャル開いてトップのLatest Newsから最新っぽいの選ぶか、左のメニューからDownload、Current Stable Release から最新っぽいのをクリック。
開いたページの上の方にあるリンクはページ内リンクなんでさらっと無視してスクロールダウン。
Binary Packagesのとこからお使いのOSを。
と、まぁ、説明得うるほどでもねー。

コンパイルとかはこのへんをどぞ。
カオスですが。

Hugs

俺は普段使ってない。
早さと速さで定評があるらしい。
オフィシャルはここなんだけど、Downloadingクリックすると別んとこに飛ぶ。
Download自体はここ


バイナリパッケージでいい、って人は各環境向けのを拾ってくると吉。
というか、各ディストリのパッケージ管理システムで入れるべし。
ソースは二種類あって、plusと無印。
当然前者のほうがでかい。特に使い倒そうとか思っているひとでない限り後者でもよさげ。(実はよく知らない。
うちはとりあえずでかいほうをインスト〜。
インストールは例のごとく、展開して、./configureして、makeして、make installでおっけー。


使い方は基本対話型でhugsを起動することで使える。
あと、スクリプト的に使うことのできるrunhugsもある。
世に言うシバン(#!)を加えることでシェルスクリプト的な用法が可能。

#!/usr/local/bin/runhugs

main = putStrLn "Hello World!"
$ chmod u+x hello.hs
$ ./hello.hs
Hello World!

的な感じで。


haskellは#がコメントじゃないのだが、#!だけは特別視されるっぽい。
vimだと文法エラーでマークアップされるんだけど、それが嫌ならリテラル形式を使って

#!/usr/local/bin/runhugs

\begin{code}
main = putStrLn "Hello World!"
\end{code}

LaTeXモード(\begin{code}から\end{code}までがソース)

#!/usr/local/bin/runhugs

>main = putStrLn "Hello World!"

Birdモード(>で始まる行「が」ソース。それ以外はコメントになる)
という書き方もあり〼


リテラル形式の場合は拡張子を.lhsにするのが習わし。
はてなシンタックスハイライト(というか、vimのfiletype)はlhaskellでどぞ。


あ、ghcにもrunghc(runhaskell)という同様のコマンドがありまする。


ということでインストールの説明はここまで。
一応慣例だしやっておきますか。

Hello World

言語の特徴が出づらいとか、色々批判はあるけど、まぁ、新しい言語学ぶんだったら最初はこれだよね。
ということでソースです♪(実は上にもう書いたけど。

main :: IO ()
main = putStrLn "Hello World!"

一行目は書かなくても、Warningが出なくなるだけなので*2とりあず本体は二行目。
代入っぽく見えるけど関数定義。というか、束縛。
そもそもHaskellには代入はないのです!!
あとputStrLnはぱっと見、超簡単そうな関数ですが、実はIOというカナリ重要な概念はらんでいるのです!!


と、いうことで、まともにHello Worldを理解しようとすると難しい言語haskell
別にそんな難解な訳でもないし、慣れるとかなりキモチイイ言語です。
あと美しい*3


ってことでLet's get it started!!

*1:他人がコンパイルしたバイナリなんて: http://d.hatena.ne.jp/m-bird/20080421/1208796683

*2:だけなので: とか書くと怒られそう...。意味はちゃんとありますよ。書かないといけない場合も。

*3:美しい: この言葉を口にしだすとだいぶ中毒が進んだ証拠。気をつけよう。