文と式(実行・評価についてHaskellを中心に)
この記事では、文と式について学びます。Haskellのプログラムは式を中心に構成される..という点で大きな特徴を持っています。
式を実行する際にも「評価する」という特殊な呼び方をします。命令型言語(文=実行する)と比べながら、その特徴について考えてみます。
文と式
まずプログラムは大きく、文と式によって構成されています。
■文
コンピュータに対する命令のこと
if文、for文、while文..など
文とはコンピュータに対する命令のことです。「〇〇しろ!」と指示を出していると考えると良いでしょう。for文:繰り返せ!、if文:判定しろ!なども結局は命令です。
■式
値を返す要素のこと(データ型を持つ)
変数、関数、真偽値、計算式..など
式とは値を返す要素のことです。式でもう1つ重要なのが、データ型を持つことです。上記で例に挙げた式の要素はどれも、int・char・boolなどのデータ型を持ちますよね。データ型を持った値..と考えると良いかもしれません。
命令型言語の場合
文と式をミックスして使うことが多いです。コンピュータへの命令を文として、上から順に書いていく..というスタイルです。 コンピュータへ指示をアレコレ出して動かすのが命令型言語の考え方です。(命令を1~10まで書かないといけないので、コードが冗長になりがちな欠点がありました。)
関数型言語(Haskell)の場合
可能な限り式だけでプログラムを作ります。具体的には、値を返す細かな式をたくさん定義してプログラムを組み立てます。モノすごい電卓でプログラムを動かす..と考えても良いでしょう。また式は必ずデータ型を持っていました。プログラムの全体が型付けされることで、より安全で強固に作ることができます。
実行と評価
命令型言語と関数型言語は全く違う構成要素から成り立つため、それを出力にかける際にも違った呼び方をします。命令型言語を出力にかける場合、多くは「実行する」よ呼ばれます。
関数型言語におかえる実行とは、式の計算を行い、結果として値を得ることです、式の計算のことを「評価する」と呼びます。「実行する」というのが今までの呼び方だったかもしれませんが、関数型言語では「評価する」という呼び方になりますので注意して下さい。
Discussion