変数宣言let
の具体例
Haskellにおいて変数を宣言する方法は、let
を使用する方法があります。
main = do let name = "田中太郎" print(name)
ちなみに、一つのlet
の中で複数の変数を宣言するには{}
を使用します。
main = do let {name = "田中太郎"; id = 1000} print(name) print(id)
let
構文
let構文の全体像は以下の通りです。
let { var1=value1 ; var2=value2; .. } in 式
または
do let var1=value1; let var2=value2;
letで宣言した値を使用できるのは、同じdo
ブロックの中身か、letの後に使用するin
の式内部のみです。
do
内部での使用例は先ほど提示したばかりなので、in
の具体例を提示します。
sphere r = let pi = 3.1415 in 4/3 * pi * r * r * r main = do print(sphere(10)) -- 4188.666666666666
上記の例では球体の体積を求める関数sphere
を使用しています。
その際に、let
コマンドを使用して円周率であるpi
を定義しています。
このpi
はsphere内部のみでしか使えません。
where句
上記のlet
~in
句は変数が先に宣言され、中身の関数は後ろに回されます。
しかし、ほとんどのシステムにおいては関数の中身こそが中心に来るべきであり、最初にメインの関数を表示し、内部で使用している変数を補助的に表示するほうが可読性が上がります。
これをサポートするのがwhere
句であり、関数のボディが戦闘、関数内部の一時変数が後方に来るような構文になってます。
上記の球体を求める関数を、where
句で置き換えてみましょう。
sphere r = 4/3 * pi * r * r * r where pi = 3.1415 main = do print(sphere(10))