今日からは「ふつうのHaskellプログラミング」を読んで勉強していきます。
早速寄り道
Haskellに入る前に、謝辞で気になることがありました。人名がUNIX sort順で並んでいると書いてあったのです。
UNIX sort順とはなにか。思い当たるのがsortコマンドです。「man sort」してみると、ソート・マージ・比較するコマンドのようです。
そこで、列挙されている人名(一文字目だけ列挙すると、「s,結,三,山,山,寺,西,木,柳,鈴」です)を逆順にしてテキストファイルに保存して、sortコマンドで出力してみると、確かに、謝辞で列挙された順番に出力されました。
ここで思ったのが、日本語は音読みの順番でソートされるのではないか、ということです。感じを音読みに変換すると「けつ、さん、さん、さん、じ、せい、もく、りゅう、りん」というわけで、音読み順に並んでいますが、常にこのように並ぶかどうかは、すこしWeb検索しただけではわかりませんでした。
さて、本題に戻りましょう。
いきなりHaskellから話がずれてしまいました。
さて、本のp.4からp.16まではHaskell言語の特長や、インストールの話がありますが、Haskellのコードはでてきませんので、省略いたします。他の言語と異なる部分の解説があるので、重要ですけど。
Hello,World!
HaskellのHello, Worldは以下の通りです。(hello.hs)
なお、環境はDebianのテスト版(現在はlenny)で、「apt-get install ghc」でインストールしたツールでプログラムを実行しています
main = putStrLn "Hello, World!"
なんだか、PHPとちょっと違いますね。 「=」が出てくるところが。コンパイルは以下のように呼び出します。
% ghc hello.hs -o hello
hello hello.hi hello.oという3つのファイルが出力されました。実行プログラムを実行してみました。
% ./hello Hello, World!
コンパイルせずに、インタプリタを使って実行することもできます。
% runghc hello.hs Hello, World!
インタプリタによる実行はすこしもたつきます。実行時間を測ってみました。
% time runghc hello.hs Hello, World! runghc hello.hs 0.01s user 0.27s system 100% cpu 0.284 total % time ./hello Hello, World! ./hello 0.00s user 0.01s system 116% cpu 0.007 total
テキストによると、インタプリタの起動に時間がかかるとのこと。
もう一つ、対話形式でプログラムを実行する ghci コマンドがあります
% ghci ___ ___ _ / _ \ /\ /\/ __(_) / /_\// /_/ / / | | GHC Interactive, version 6.6.1, for Haskell 98. / /_\\/ __ / /___| | http://www.haskell.org/ghc/ \____/\/ /_/\____/|_| Type :? for help. Loading package base ... linking ... done. Prelude> putStrLn "Hello, World!" Hello, World! Prelude> :quit Leaving GHCi.
ghciの終了コマンドは:quitまたは:qですが、これはvimと同じなのでvim使いには都合がいいですね(笑)
今回のまとめ
- UNIX sortを調べてみた
- Haskellで書いたプログラムを実行する3つのツール、ghc, runghc, ghciを使ってみた
![]() | ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門 青木 峰郎 山下 伸夫 ソフトバンククリエイティブ 2006-06-01 売り上げランキング : 11720 おすすめ平均 ![]() Amazonで詳しく見る by G-Tools |

















