2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Haskellにおける関数の適用と呼び出しの違い

Posted at

背景

昨日、Twitterで「Haskellの関数の呼び出しなどの表記方が初心者にはちょっと難しい」のようなことを言ったところ「Haskellで関数の呼び出しってしたっけな」というものがあった

関数は呼び出すものというイメージがあったため気にせず呼び出すという言葉を使ったが、正しくはなんなのかを調べることとした

関数型プログラミングにおける関数

Haskellの関数は以下のような特徴を持ちます:

  • 副作用を持たない(参照透過性)
  • 同じ入力に対して常に同じ出力を返す
  • 変数に代入したり、引数として渡したり、関数から返すことができる

このような特徴を関数が持つことで、数学的な関数としての意味合いが強く、適用と表現するようだ

関数の適用

Haskellでは、関数を適用するために引数を関数名の後に空白で区切って記述します。例えば、f xは関数fに引数xを適用することを意味します

以下は、Haskellでの関数適用の例です:

add :: Int -> Int -> Int
add x y = x + y

result = add 3 5

ここでは、add関数に引数35を適用し、その結果をresultに代入しています

関数の部分適用

調べていく中で、部分適用という言葉も目にしました。部分適用とは、関数に必要な引数の一部だけを与えて、残りの引数を受け取る新しい関数を作成することです

例えば:

add5 = add 5
result = add5 3

ここでは、add関数に引数5を部分適用することで、新しい関数add5を作成しています。add5関数は、追加の引数を1つ受け取り、その引数に5を加算します

まとめ

Haskellにおいては、関数を「呼び出す」というよりも「適用する」という表現が一般的であるとわかりました

大元を完全に理解はできていないが、数学的な関数と同様に利用できること数学の影響を強く受けていることから数学の関数を適用するをそのまま使っているのではないかと考えた

違ってたらコメント下さい!!

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?