Help us understand the problem. What is going on with this article?

関数型言語の入門勉強会メモ

More than 1 year has passed since last update.

関数型プログラミングとはなんぞや? という勉強会で走り書きしたメモを起こしてみました。
正直、情報の精度としては怪しいの。
間違いがあったらご指摘ください。(他力本願)

関数型プログラミングとは

プログラミングパラダイムの1つ。
(パラダイム:考え方、捉え方)

パーツがコンパクトになり、再利用性が高い。

用語

副作用

関数呼び出し前後で「状態」を書き換えること。
同じ引数でも必ず同じ結果にならない。

純粋関数

副作用のない関数のこと。
同じ引数なら、いつでも同じ結果を返す。

特徴

関数プログラミングにはif文、for文などがなく、関数を定義する。
(if式あります。詳細はコメント参照)

一般的なfor文の例
total = 0;
for (i = 0; i <= 10; i++){
total = total + i;
}

sample.hs
total 0 = 0
total n = n + total (n - 1)

main = do
    print $ total 10

基底部と再帰部を書いたらやってくれる。
関数はすべて部分適用が可能。詳しくは「カリー化」。

まとめ

関数をオブジェクトとして考える必要はなく、オブジェクト指向は他の言語でやればいい。
あくまでもパラダイムの一つとして付き合うと他の言語でも広がりを与えてくれる。
純粋のものと副作用のものは分けるべきで、副作用を触る場合はそれ専用のレイヤーを用意する。
設計するときは関数言語の本質はなんだっけと立ち直ってやっていくと良い。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした