インストール
とりあえず入門?とか?
書いてみる?
とりあえずインストールから。
haskellの実装はなんかGHCとHugsというのが二強らしい。
個人的には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:美しい: この言葉を口にしだすとだいぶ中毒が進んだ証拠。気をつけよう。