スクリプトのロード
上で編集した内容をBMI.hsというファイルにセーブし、エディタをいったん終了してから、スクリプトファイルBMI.hsを指定してGHCiを起動する。
$ ls BMI.hs |
こうすると、スクリプトファイルBMI.hsがGHCiにロードされる。あるいはGHCiを単に起動してから、GHCiのロードコマンドを用いてBMI.hsをロードする(もし、ロードがうまくいかなかったら、スクリプトをよくチェックする必要がある。大文字小文字の違い、つづり間違いなどがないかよく確認すること)。
$ ghci |
プロンプトが*BMI>となっているのは、現在、BMIモジュールをロードした状態になっていることを示している。
実際にstdBMIを使ってみる。
*BMI> (1.75 ^ 2) * stdBMI |
先刻の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行目
モジュール宣言:スクリプトに名前を付ける
「このスクリプトの名前は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の世界を体験してみよう |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|