第1回 Haskellプログラミングの楽しみ方

山下 伸夫
株式会社タイムインターメディア

2008/10/29

スクリプトのロード

 上で編集した内容をBMI.hsというファイルにセーブし、エディタをいったん終了してから、スクリプトファイルBMI.hsを指定してGHCiを起動する。

$ ls BMI.hs
BMI.hs
$ ghci BMI.hs
*BMI> _

 こうすると、スクリプトファイルBMI.hsがGHCiにロードされる。あるいはGHCiを単に起動してから、GHCiのロードコマンドを用いてBMI.hsをロードする(もし、ロードがうまくいかなかったら、スクリプトをよくチェックする必要がある。大文字小文字の違い、つづり間違いなどがないかよく確認すること)。

$ ghci
GHCi, version 6.8.3: http://www.haskell.org/ghc/  :? for help
Loading package base ... linking ... done.
Prelude> :load BMI.hs
[1 of 1] Compiling BMI              ( BMI.hs, interpreted )
Ok, modules loaded: BMI.
*BMI>

 プロンプトが*BMI>となっているのは、現在、BMIモジュールをロードした状態になっていることを示している。

 実際にstdBMIを使ってみる。

*BMI> (1.75 ^ 2) * stdBMI
67.375

 先刻の22.0の代わりにstdBMIという名前を用いても同じ結果になる。

 実はエディタとしてEmacsを使い、haskell-modeを適切に設定している場合は、Emacs内でGHCiを起動して、現在編集しているファイルをロードすることができる。これには、BMI.hsのバッファ内でC-c C-l(コントロールキーを押しながらcキーを押し、さらに続けてコントロールキーを押しながらlキーを押す)とする。

スクリプトを読む

 スクリプトの書き方を覚えるには、実際のスクリプト(本連載で利用するスクリプトファイルはhttp://www.sampou.org/haskell/atmarkit/から取得できる)を読むのが手っ取り早い。

$ cat -n BMI.hs
    1  module BMI where
    2
    3  type BMI = Double
    4
    5  stdBMI :: BMI
    6  stdBMI = 22.0
    7
    ...

1行目

 モジュール宣言:スクリプトに名前を付ける
 「このスクリプトの名前はBMIである」
 ここのBMIはモジュール名

3行目

 型シノニム宣言:既存の型に別名を付ける
  「型BMIは型Doubleのことである」
 ここのBMIは型シノニム
 Doubleは型構成子

5行目

 型シグネチャ:stdBMIが表す値の型を表明
 「stdBMIの型はDoubleである」
 stdBMIは変数(名)

6行目

 値束縛:stdBMIを右辺の式が表す値に束縛
 「stdBMIの値は22.0(が表す値)である」

Haskellスクリプトにおける名前

 BMI.hsというスクリプトでは3種類の名前が定義されている。

  • モジュール名:BMI
  • 型シノニム:BMI
  • 変数名:stdBMI

 Haskellスクリプトで使われる名前にはこれ以外に、

  • 型構成子名
  • 型変数名
  • データ構成子名
  • フィールド名
  • クラス名
  • 演算子名

などがある。これらの名前を表すのは以下のどれかである。

  • 大文字で開始する英数字列:
    モジュール名、型シノニム、型構成子名、データ構成子名、クラス名
  • 小文字で開始英数字列:
    変数名、型変数名、フィールド名、メソッド名
  • 記号のみからなる列:
    演算子名

 詳しくは「Haskell 98 言語とライブラリ改訂レポート」第2章を参考のこと。

関連リンク:
リンク Haskell 98 言語とライブラリ改訂レポート
http://www.sampou.org/haskell/report-revised-j/

 今回は、

  • Haskellプログラミングを楽しむための心得
  • 電卓としてのGHCiの使い方
  • Haskellスクリプトの書き方と使い方
  • Haskellスクリプトにおける名前の種類

について学んだ。次回はHaskellプログラミングの肝である関数と型を取り上げる。

3/3
 

Index
Haskellプログラミングの楽しみ方
  Page1
Haskellプログラミングのスタイル
Haskellプログラミングを楽しむための心得
セッションとスクリプト
GHCiの起動と終了
  Page2
電卓としてのGHCi
スクリプト
名前を付ける
スクリプトを書く
Page3
スクリプトのロード
スクリプトを読む
Haskellスクリプトにおける名前
のんびりHaskell

 Coding Edgeお勧め記事
いまさらアルゴリズムを学ぶ意味
コーディングに役立つ! アルゴリズムの基本(1)
 コンピュータに「3の倍数と3の付く数字」を判断させるにはどうしたらいいか。発想力を鍛えよう
Zope 3の魅力に迫る
Zope 3とは何ぞや?(1)
 Pythonで書かれたWebアプリケーションフレームワーク「Zope 3」。ほかのソフトウェアとは一体何が違っているのか?
貧弱環境プログラミングのススメ
柴田 淳のコーディング天国
 高性能なIT機器に囲まれた環境でコンピュータの動作原理に触れることは可能だろうか。貧弱なPC上にビットマップの直線をどうやって引く?
Haskellプログラミングの楽しみ方
のんびりHaskell(1)
 関数型言語に分類されるHaskell。C言語などの手続き型言語とまったく異なるプログラミングの世界に踏み出してみよう
ちょっと変わったLisp入門
Gaucheでメタプログラミング(1)
 Lispの一種であるScheme。いくつかある処理系の中でも気軽にスクリプトを書けるGaucheでLispの世界を体験してみよう
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間