人気ブログランキングへ

2009年02月25日

Yet Another Haskell Tutorial (和訳): 3.1 計算

3.1 計算

Haskellへの襲撃は計算から開始するとしよう。お好みの対話的シェル (HugsまたはGHCi。インストール手順については第2章を参照) を起動する。シェルは、そのシェルに関する説明と、何をしようとしているかを画面上に数行出力し、最後にカーソルを待ち受け状態にするはずである

Prelude>

これで、の評価を始めることができる。式とは、基本的には値を持つもののことである。たとえば、数値5は式である (その値は5)。値は別の値を組み合わせて作られることもある。たとえば、5 + 6は式である (その値は11)。実際、加算 (+)、減算 (-)、乗算 (*)、除算 (/)、累乗 (^)、平方根 (sqrt) など、簡単な算術演算子のほとんどがHaskellでサポートされている。対話的シェルに式を評価してもらいその値を受け取ることで、これらの演算子を試すことができる。こうすればHaskellのシェルは強力な計算機として使用できる。以下に挙げるものをいくつか試してみよう。

Prelude> 5*4+3
23
Prelude> 5ˆ5-2
3123
Prelude> sqrt 2
1.4142135623730951
Prelude> 5*(4+3)
35

Haskellは、標準的な算術演算子のほかに括弧によるグループ化もできることがわかる。そのため、5*4+3と5*(4+3)の値が異なっている。こうなる理由は、最初の式には演算子の優先順位により暗黙のグループ化(5*4)+3が起きているからだ。
関数の引数に括弧が必要ないことにも注意する必要がある。たとえば、他のほとんどの言語ではsqrt(2)と書かなければならないが、単にsqrt 2と書いている。括弧をつけて記述することもできるが、Haskellでは関数の利用がかなり一般的なので括弧は必須ではない。

■警告■ 括弧は必ずしも必要ではないが、つけておいたほうが良い場合もある。おそらく、あなたの書いたコードをほかの人が読まなければならないこともあるだろう。括弧をつけるとコードの意味がはっきりする場合は括弧をつけるべきである。

さて、2^5000を入力してみよう。動作するだろうか?

■注■ 他の言語でのプログラミングに慣れていると、sqrt 2は与えた引数が整数なのに小数点付きの値 (つまり浮動小数点型の数値) を返すことに違和感を覚えるかもしれない。この数値型の互換性はHaskellの型クラスという仕組みによるもので、第4.3節で詳しく述べる。


演習

演習3.1 乗算は加算よりも結びつきが強いことを学んだ。では、関数の適用が乗算より結びつきが強いかどうか調べるにはどうすればよいだろうか?


前ページ「3 Haskell言語の基礎
次ページ「3.2 タプル


5 Basic Input/Output
6 Modules
7 Advanced Features
8 Advanced Types
9 Monads
10 Advanced Techniques
A Brief Complexity Theory
B Recursion and Induction
C Solutions To Exercises


これは、Haskell (ハスケル) のチュートリアル "Yet Another Haskell Tutorial" を日本語に翻訳したものです。
オリジナルのドキュメントは、
http://www.cs.utah.edu/~hal/docs/daume02yaht.pdf
などから入手できます。
日本語訳に関するご指摘は、コメントとしてお寄せください。

posted by K/I at 21:50 | 東京 🌁 | Comment(0) | TrackBack(0) | Yet Another Haskell Tutorial | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。