scalaで学ぶ関数型超入門
DESCRIPTION
学内発表会スライドTRANSCRIPT
![Page 1: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/1.jpg)
Scalaで学ぶ関数型言語超入門~関数型言語の魅力~
![Page 2: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/2.jpg)
はじめに素数アルゴリズムで見るオブジェクト指向言語との違い
![Page 3: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/3.jpg)
エラトステネスのふるい?
![Page 4: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/4.jpg)
エラトステネスのふるい?• 素数を求めるときに使うアルゴリズム
![Page 5: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/5.jpg)
エラトステネスのふるい?• 素数を求めるときに使うアルゴリズム
• プログラミングの問題なんかによく出てくる
![Page 6: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/6.jpg)
エラトステネスのふるい?• 素数を求めるときに使うアルゴリズム
• プログラミングの問題なんかによく出てくる
• 古代ギリシャの数学者であるエラトステネスが考案したのでこう呼ばれている
←エラトステネス
![Page 7: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/7.jpg)
内容
![Page 8: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/8.jpg)
内容• 整数のリストに2からxまでの数字を入れます
![Page 9: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/9.jpg)
内容• 整数のリストに2からxまでの数字を入れます
• リストの先頭に行き、その数の倍数を振り落とす
![Page 10: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/10.jpg)
内容• 整数のリストに2からxまでの数字を入れます
• リストの先頭に行き、その数の倍数を振り落とす
• リストの先頭の値がxの平方根になるまで繰り返す
![Page 11: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/11.jpg)
このように余計な数字を順番に振り落としていくわけです!
![Page 12: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/12.jpg)
人間社会によく似ていますね!
![Page 13: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/13.jpg)
では早速コードを見てみましょう!
![Page 14: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/14.jpg)
Javaの実装例
![Page 15: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/15.jpg)
少しごちゃごちゃしていますね・・・
Oh no!
![Page 16: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/16.jpg)
ではこれをScalaで書くと?
![Page 17: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/17.jpg)
ではこれをScalaで書くと?
![Page 18: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/18.jpg)
Scalaの実装例
![Page 19: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/19.jpg)
たったこれだけ!?
![Page 20: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/20.jpg)
比較Java Scala
![Page 21: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/21.jpg)
すばらしい!
![Page 22: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/22.jpg)
なぜこんな簡潔に短く書けるのか気になりませんか?
空気読んで!
![Page 23: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/23.jpg)
もちろん気になりますよね?
![Page 24: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/24.jpg)
それではご説明致しましょう! 関数型の世界へようこそ!
![Page 25: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/25.jpg)
関数型言語について~関数型言語の種類や利点、特徴~
![Page 26: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/26.jpg)
そもそも”関数型言語”ってなんぞや?
![Page 27: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/27.jpg)
関数型言語とは!
関数型プログラミングに向いた特徴を持つ
プログラミング言語で、引数に関数を作用させて
計算を行う事から作用型言語とも言われる!
(Wikipediaより抜粋)
![Page 28: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/28.jpg)
は?(^q^)
![Page 29: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/29.jpg)
どういうこと?
![Page 30: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/30.jpg)
関数型言語の特徴
![Page 31: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/31.jpg)
関数型言語の特徴• 基本的に一度変数に値を入れると変更できない(イミュータブルな変数)
![Page 32: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/32.jpg)
関数型言語の特徴• 基本的に一度変数に値を入れると変更できない(イミュータブルな変数)
• 関数がファーストクラスオブジェクトである
![Page 33: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/33.jpg)
関数型言語の特徴• 基本的に一度変数に値を入れると変更できない(イミュータブルな変数)
• 関数がファーストクラスオブジェクトである
• 高階関数
![Page 34: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/34.jpg)
関数型言語の特徴• 基本的に一度変数に値を入れると変更できない(イミュータブルな変数)
• 関数がファーストクラスオブジェクトである
• 高階関数
• 関数の部分適用、カリー化
![Page 35: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/35.jpg)
関数型言語の特徴• 基本的に一度変数に値を入れると変更できない(イミュータブルな変数)
• 関数がファーストクラスオブジェクトである
• 高階関数
• 関数の部分適用、カリー化
• 遅延評価
![Page 36: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/36.jpg)
関数型言語の特徴• 基本的に一度変数に値を入れると変更できない(イミュータブルな変数)
• 関数がファーストクラスオブジェクトである
• 高階関数
• 関数の部分適用、カリー化
• 遅延評価
• Option型
![Page 37: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/37.jpg)
関数型言語の特徴• 基本的に一度変数に値を入れると変更できない(イミュータブルな変数)
• 関数がファーストクラスオブジェクトである
• 高階関数
• 関数の部分適用、カリー化
• 遅延評価
• Option型
• 再帰
![Page 38: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/38.jpg)
関数型言語の特徴• 基本的に一度変数に値を入れると変更できない(イミュータブルな変数)
• 関数がファーストクラスオブジェクトである
• 高階関数
• 関数の部分適用、カリー化
• 遅延評価
• Option型
• 再帰
• 型推論
![Page 39: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/39.jpg)
関数型言語ってどんなんがあんの?
![Page 40: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/40.jpg)
代表的な関数型言語
![Page 41: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/41.jpg)
代表的な関数型言語• 純粋関数型言語
![Page 42: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/42.jpg)
代表的な関数型言語• 純粋関数型言語
• Haskell • Miranda
![Page 43: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/43.jpg)
代表的な関数型言語• 純粋関数型言語
• Haskell • Miranda
• 非純粋関数型言語
![Page 44: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/44.jpg)
代表的な関数型言語• 純粋関数型言語
• Haskell • Miranda
• 非純粋関数型言語
• ML • Scala • OCaml • Erlang • Swift
![Page 45: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/45.jpg)
じゃあ関数型言語を使うと何が嬉しいの?
![Page 46: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/46.jpg)
関数型言語のメリットその1
実行時エラーが圧倒的に少ない
![Page 47: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/47.jpg)
実行時エラーが少ない
![Page 48: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/48.jpg)
実行時エラーが少ない• 基本的にコンパイル時にほとんどのエラーを検出してくれる
![Page 49: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/49.jpg)
実行時エラーが少ない• 基本的にコンパイル時にほとんどのエラーを検出してくれる
• Option型の使用によりぬるぽで落ちることはほとんどない!(多少意識してコーディングする必要はある)
![Page 50: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/50.jpg)
実行時エラーが少ない• 基本的にコンパイル時にほとんどのエラーを検出してくれる
• Option型の使用によりぬるぽで落ちることはほとんどない!(多少意識してコーディングする必要はある)
• 値が変更不可能、また関数が細かいのでバグが発見しやすい
![Page 51: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/51.jpg)
関数型言語のメリットその2
コードが短くシンプルになる
![Page 52: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/52.jpg)
コードが短くシンプルになる
![Page 53: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/53.jpg)
コードが短くシンプルになる• 関数を処理毎に細かく分けそれをつなげたり合成したりしてプログラミングしていくので、コードが短くて済む
![Page 54: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/54.jpg)
コードが短くシンプルになる• 関数を処理毎に細かく分けそれをつなげたり合成したりしてプログラミングしていくので、コードが短くて済む
• 上で説明したように大きな関数も細かい関数から成り立っているので、いくつか関数を理解すれば他の関数もスッと理解していく事ができる
![Page 55: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/55.jpg)
関数型言語のメイン、関数について~関数と高階関数~
![Page 56: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/56.jpg)
関数の特徴
![Page 57: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/57.jpg)
関数の特徴• 同じ入力に対して必ず同じ出力を返す(原則)
![Page 58: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/58.jpg)
関数の特徴• 同じ入力に対して必ず同じ出力を返す(原則)
• 関数は変数と同じく引数や戻り値にもできる(ファーストクラスオブジェクト) ←重要!
![Page 59: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/59.jpg)
関数の特徴• 同じ入力に対して必ず同じ出力を返す(原則)
• 関数は変数と同じく引数や戻り値にもできる(ファーストクラスオブジェクト)
• また、変数に格納する事も関数同士を組み合わせて新しい関数を作る事も可能
![Page 60: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/60.jpg)
Java(笑)などのオブジェクト指向言語のメソッドに比べて柔軟性が高い!
という事です!
![Page 61: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/61.jpg)
じゃあ高階関数って?
後悔→
![Page 62: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/62.jpg)
高階関数とは!
![Page 63: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/63.jpg)
高階関数とは!• 引数に関数を取ったり、戻り値として関数を返す関数のこと
![Page 64: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/64.jpg)
高階関数とは!• 引数に関数を取ったり、戻り値として関数を返す関数のこと
• List(配列みたいなもん)を操作するmap、filter、foreachなどが有名
![Page 65: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/65.jpg)
今回はmapをご紹介したいと思います!
![Page 66: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/66.jpg)
map関数とは!
![Page 67: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/67.jpg)
map関数とは!• mapとは
“配列の中身を引数に取り(A型とします)B型を返す関数”
を引数に取りB型のコレクションを返す高階関数です
![Page 68: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/68.jpg)
map関数とは!• mapとは
“配列の中身を引数に取り(A型とします)B型を返す関数”
を引数に取りB型のコレクションを返す高階関数です • 引数として与えられた関数を配列の要素一つ一つに適用
していきます
![Page 69: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/69.jpg)
つまり・・・
![Page 70: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/70.jpg)
“配列の中身を何かしら変化させる関数” という事ですね!
![Page 71: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/71.jpg)
ではmapを使って配列の中身を全て2倍にして出力してみます!
(配列の中身を)
![Page 72: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/72.jpg)
mapを使って配列の中身を2倍に
![Page 73: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/73.jpg)
なんだかよくわかりませんね! (^q^)
![Page 74: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/74.jpg)
解説!
![Page 75: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/75.jpg)
解説!• mapの中にある (v: Int) => v * 2 というのが引数として与えられている関数です
![Page 76: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/76.jpg)
解説!• mapの中にある (v: Int) => v * 2 というのが引数として与えられている関数です
• この関数は数値を一つ引数に取り、その数値を2倍にして返します
![Page 77: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/77.jpg)
図解map関数
![Page 78: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/78.jpg)
は?(威圧)
![Page 79: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/79.jpg)
returnが無いのになんで戻り値があんの?
![Page 80: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/80.jpg)
returnについて
![Page 81: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/81.jpg)
returnについて• Scalaをはじめとする関数型言語では関数の戻り値は
”関数の中で最後に評価(実行)された値”となるので
return文は基本的に必要ないのです!
![Page 82: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/82.jpg)
returnについて• Scalaをはじめとする関数型言語では関数の戻り値は
”関数の中で最後に評価(実行)された値”となるので
return文は基本的に必要ないのです! • なので今回の場合は v * 2 がそのまま戻り値となります
![Page 83: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/83.jpg)
まとめ
![Page 84: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/84.jpg)
まとめ• 関数型言語は小さな関数を組み合わせてプログラムを作りあげていく!
![Page 85: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/85.jpg)
まとめ• 関数型言語は小さな関数を組み合わせてプログラムを作りあげていく!
• 関数の柔軟性が高いので複雑な処理もシンプルに書ける!
![Page 86: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/86.jpg)
まとめ• 関数型言語は小さな関数を組み合わせてプログラムを作りあげていく!
• 関数の柔軟性が高いので複雑な処理もシンプルに書ける!
• コードの記述量が減る!
![Page 87: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/87.jpg)
まとめ• 関数型言語は小さな関数を組み合わせてプログラムを作りあげていく!
• 関数の柔軟性が高いので複雑な処理もシンプルに書ける!
• コードの記述量が減る!
• 実行時エラーがほとんどない!
![Page 88: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/88.jpg)
まとめ• 関数型言語は小さな関数を組み合わせてプログラムを作りあげていく!
• 関数の柔軟性が高いので複雑な処理もシンプルに書ける!
• コードの記述量が減る!
• 実行時エラーがほとんどない!
• 読みやすい!
![Page 89: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/89.jpg)
まとめ• 関数型言語は小さな関数を組み合わせてプログラムを作りあげていく!
• 関数の柔軟性が高いので複雑な処理もシンプルに書ける!
• コードの記述量が減る!
• 実行時エラーがほとんどない!
• 読みやすい!
• 高階関数(というか考え方)はとても大事!
![Page 90: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/90.jpg)
まとめ2
関数型言語(とくにScala)最高! (☝ ՞ਊ ՞)☝フウウウゥゥゥ!!!wwwwww
![Page 91: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/91.jpg)
これを期にぜひ関数型言語を触ってみてください!
![Page 92: Scalaで学ぶ関数型超入門](https://reader030.vdocuments.net/reader030/viewer/2022012922/5594f5ce1a28aba81c8b458b/html5/thumbnails/92.jpg)
ご清聴ありがとうございました!