背景
昨日、Twitterで「Haskellの関数の呼び出しなどの表記方が初心者にはちょっと難しい」のようなことを言ったところ「Haskellで関数の呼び出し
ってしたっけな」というものがあった
関数は呼び出す
ものというイメージがあったため気にせず呼び出す
という言葉を使ったが、正しくはなんなのかを調べることとした
関数型プログラミングにおける関数
Haskellの関数は以下のような特徴を持ちます:
- 副作用を持たない(参照透過性)
- 同じ入力に対して常に同じ出力を返す
- 変数に代入したり、引数として渡したり、関数から返すことができる
このような特徴を関数が持つことで、数学的な関数としての意味合いが強く、適用
と表現するようだ
関数の適用
Haskellでは、関数を適用するために引数を関数名の後に空白で区切って記述します。例えば、f x
は関数f
に引数x
を適用することを意味します
以下は、Haskellでの関数適用の例です:
add :: Int -> Int -> Int
add x y = x + y
result = add 3 5
ここでは、add
関数に引数3
と5
を適用し、その結果をresult
に代入しています
関数の部分適用
調べていく中で、部分適用という言葉も目にしました。部分適用とは、関数に必要な引数の一部だけを与えて、残りの引数を受け取る新しい関数を作成することです
例えば:
add5 = add 5
result = add5 3
ここでは、add
関数に引数5
を部分適用することで、新しい関数add5
を作成しています。add5
関数は、追加の引数を1つ受け取り、その引数に5
を加算します
まとめ
Haskellにおいては、関数を「呼び出す
」というよりも「適用する
」という表現が一般的であるとわかりました
大元を完全に理解はできていないが、数学的な関数と同様に利用できること
、数学の影響を強く受けている
ことから数学の関数を適用するをそのまま使っているのではないか
と考えた
違ってたらコメント下さい!!