Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Naoki Kitora
3,767 views
命令プログラミングから関数プログラミングへ
Read more
33
Save
Share
Embed
Embed presentation
Download
Downloaded 36 times
1
/ 27
2
/ 27
3
/ 27
4
/ 27
5
/ 27
6
/ 27
7
/ 27
8
/ 27
9
/ 27
10
/ 27
11
/ 27
12
/ 27
13
/ 27
14
/ 27
15
/ 27
16
/ 27
17
/ 27
18
/ 27
19
/ 27
20
/ 27
21
/ 27
22
/ 27
23
/ 27
24
/ 27
25
/ 27
26
/ 27
27
/ 27
More Related Content
PDF
たのしい高階関数
by
Shinichi Kozake
PDF
研究生のためのC++ no.3
by
Tomohiro Namba
PDF
研究生のためのC++ no.4
by
Tomohiro Namba
PDF
関数プログラミング入門
by
Hideyuki Tanaka
PPTX
純粋関数型アルゴリズム入門
by
Kimikazu Kato
PDF
関数型プログラミング入門 with OCaml
by
Haruka Oikawa
PDF
Python勉強会4-制御構文とパッケージ
by
理 小林
ODP
Real World OCamlを読んでLispと協調してみた
by
blackenedgold
たのしい高階関数
by
Shinichi Kozake
研究生のためのC++ no.3
by
Tomohiro Namba
研究生のためのC++ no.4
by
Tomohiro Namba
関数プログラミング入門
by
Hideyuki Tanaka
純粋関数型アルゴリズム入門
by
Kimikazu Kato
関数型プログラミング入門 with OCaml
by
Haruka Oikawa
Python勉強会4-制御構文とパッケージ
by
理 小林
Real World OCamlを読んでLispと協調してみた
by
blackenedgold
What's hot
PDF
関数プログラミング ことはじめ (再)
by
Suguru Hamazaki
PPTX
for関数を使った繰り返し処理によるヒストグラムの一括出力
by
imuyaoti
PPT
言語処理系入門5
by
Kenta Hattori
PDF
関数プログラミングことはじめ
by
Naoki Kitora
PDF
Fork/Join Framework。そしてLambdaへ。
by
Yuichi Sakuraba
ODP
(define)なしで再帰関数を定義する
by
blackenedgold
PDF
Emcjp item21
by
MITSUNARI Shigeo
PDF
[Basic 13] 型推論 / 最適化とコード出力
by
Yuto Takei
PDF
JavaScript 講習会 #1
by
Susisu
PDF
関数型プログラミング in javascript
by
Ryuma Tsukano
PPT
CLR/H No.35-2
by
Nobuhisa Koizumi
PDF
VS勉強会 .NET Framework 入門
by
kamukiriri
PDF
Java初心者勉強会(2015/08/07)資料
by
Toshio Ehara
PDF
Java電卓勉強会資料
by
Toshio Ehara
PDF
研究生のためのC++ no.2
by
Tomohiro Namba
PDF
これから Haskell を書くにあたって
by
Tsuyoshi Matsudate
PPTX
XMLPro 4回目 文字入力 条件分岐
by
XMLProJ2014
PDF
Python for Data Anaysis第2回勉強会4,5章
by
Makoto Kawano
KEY
ラムダ計算入門
by
Eita Sugimoto
PDF
数式をnumpyに落としこむコツ
by
Shuyo Nakatani
関数プログラミング ことはじめ (再)
by
Suguru Hamazaki
for関数を使った繰り返し処理によるヒストグラムの一括出力
by
imuyaoti
言語処理系入門5
by
Kenta Hattori
関数プログラミングことはじめ
by
Naoki Kitora
Fork/Join Framework。そしてLambdaへ。
by
Yuichi Sakuraba
(define)なしで再帰関数を定義する
by
blackenedgold
Emcjp item21
by
MITSUNARI Shigeo
[Basic 13] 型推論 / 最適化とコード出力
by
Yuto Takei
JavaScript 講習会 #1
by
Susisu
関数型プログラミング in javascript
by
Ryuma Tsukano
CLR/H No.35-2
by
Nobuhisa Koizumi
VS勉強会 .NET Framework 入門
by
kamukiriri
Java初心者勉強会(2015/08/07)資料
by
Toshio Ehara
Java電卓勉強会資料
by
Toshio Ehara
研究生のためのC++ no.2
by
Tomohiro Namba
これから Haskell を書くにあたって
by
Tsuyoshi Matsudate
XMLPro 4回目 文字入力 条件分岐
by
XMLProJ2014
Python for Data Anaysis第2回勉強会4,5章
by
Makoto Kawano
ラムダ計算入門
by
Eita Sugimoto
数式をnumpyに落としこむコツ
by
Shuyo Nakatani
Similar to 命令プログラミングから関数プログラミングへ
PDF
たのしい関数型
by
Shinichi Kozake
PDF
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
by
Ouka Yuka
PPTX
ゼロから始めるScala文法 (再)
by
Suguru Hamazaki
PDF
関数型都市忘年会『はじめての函数型プログラミング』
by
Kenta USAMI
PDF
Scalaプログラミング・マニアックス
by
Tomoharu ASAMI
PDF
Essential Scala 第5章 シーケンス処理
by
Takuya Tsuchida
PDF
プログラミング言語Scala
by
TanUkkii
PDF
15分でざっくり分かるScala入門
by
SatoYu1ro
PPT
Pythonintro
by
Mikio Kubo
PDF
Functional Way
by
Kent Ohashi
PDF
20121222 scalaビギナーズ
by
Asami Abe
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
by
Ra Zon
PDF
Scalaで萌える関数型プログラミング[完全版]
by
Ra Zon
PDF
Javaプログラミング入門
by
なおき きしだ
PDF
F#入門 ~関数プログラミングとは何か~
by
Nobuhisa Koizumi
PDF
すごいHaskell読書会#1 in 大阪
by
yashigani
PDF
磯野ー!関数型言語やろうぜー!
by
Ra Zon
PDF
関数型軽い紹介
by
Daniel Perez
PDF
オブジェクト指向開発におけるObject-Functional Programming
by
Tomoharu ASAMI
PDF
代数的データ型をラムダ計算の中で表現する方法
by
syamino
たのしい関数型
by
Shinichi Kozake
(Ruby使いのための)Scalaで学ぶ関数型プログラミング
by
Ouka Yuka
ゼロから始めるScala文法 (再)
by
Suguru Hamazaki
関数型都市忘年会『はじめての函数型プログラミング』
by
Kenta USAMI
Scalaプログラミング・マニアックス
by
Tomoharu ASAMI
Essential Scala 第5章 シーケンス処理
by
Takuya Tsuchida
プログラミング言語Scala
by
TanUkkii
15分でざっくり分かるScala入門
by
SatoYu1ro
Pythonintro
by
Mikio Kubo
Functional Way
by
Kent Ohashi
20121222 scalaビギナーズ
by
Asami Abe
Scalaで萌える関数型プログラミング[1.1.RC1]
by
Ra Zon
Scalaで萌える関数型プログラミング[完全版]
by
Ra Zon
Javaプログラミング入門
by
なおき きしだ
F#入門 ~関数プログラミングとは何か~
by
Nobuhisa Koizumi
すごいHaskell読書会#1 in 大阪
by
yashigani
磯野ー!関数型言語やろうぜー!
by
Ra Zon
関数型軽い紹介
by
Daniel Perez
オブジェクト指向開発におけるObject-Functional Programming
by
Tomoharu ASAMI
代数的データ型をラムダ計算の中で表現する方法
by
syamino
More from Naoki Kitora
PDF
関数プログラミングことはじめ in 福岡
by
Naoki Kitora
PDF
関数プログラミングことはじめ revival
by
Naoki Kitora
PDF
機械学習とデータ分析プロセス
by
Naoki Kitora
PDF
Scala kansai summit-2016
by
Naoki Kitora
PDF
Developers summit 2016_kansai
by
Naoki Kitora
PDF
第2回関数型言語勉強会 大阪
by
Naoki Kitora
PDF
第一回関数型言語勉強会 大阪
by
Naoki Kitora
関数プログラミングことはじめ in 福岡
by
Naoki Kitora
関数プログラミングことはじめ revival
by
Naoki Kitora
機械学習とデータ分析プロセス
by
Naoki Kitora
Scala kansai summit-2016
by
Naoki Kitora
Developers summit 2016_kansai
by
Naoki Kitora
第2回関数型言語勉強会 大阪
by
Naoki Kitora
第一回関数型言語勉強会 大阪
by
Naoki Kitora
命令プログラミングから関数プログラミングへ
1.
命令プログラミングから 関数プログラミングへ 関数プログラマは問題をどう考えるか
Scala 関西ビギナーズ 第 2 回
2.
前提 • 厳密な正確性よりもわかりやすさを重視
3.
関数プログラミングの関数 数学でいうところの関数 f(x) = x
+ 1 だから Scala では •関数定義に = (イコール) を使用 •関数内で最後に評価された値が返る def f(x: Int) {x + 1} Which is def f(x: Int) = return x + 1 better? def f(x: Int) = x + 1 ※注: 上の 2つは正しいコードではありません。
4.
関数プログラミング (狭義) • 変更可能な変数 •
再代入 • ループなどの命令型の制御 を使わずにプログラミングすること
5.
命令プログラマの疑問 再代入やループなしにどうやって書くのか? int sum
= 0; for (int i = 0; array.length = 0; i++) { sum += array[i]; } return sum;
6.
i = i
+ 1; 最初に見たとき違和感ありませんでしたか?
7.
プログラミングの関心事 命令プログラミング 具体的な手順を記述 関数プログラミング 対象の性質を定義
8.
関数プログラミングでの問題へのアプローチ 問題を抽象化・一般化
9.
問題 ある自然数を引数にとり、0から当 該自然数までの整数の合計を返す関 数を定義せよ
10.
命令プログラミング • 0からnまでカウントアップ • カウントアップした数字を足し込んでいく int
f(int n) { int total = 0; for (int i = 0; i <= n; i++) { total += i; } return total; }
11.
例示して性質を抽出 f(0) = 0 f(1)
= 0 + 1 f(2) = 0 + 1 + 2 f(3) = 0 + 1 + 2 + 3 ... f(n) = 0 + 1 + 2 + 3 + ... + n
12.
具体から抽象へ f(0) = 0 f(1)
= f(0) + 1 f(2) = f(1) + 2 f(3) = f(2) + 3 ... f(n) = f(n - 1) + n
13.
f(0) = 0 f(n)
= f(n - 1) + n def f(n: Int): Int = if (n = 0) 0 else f(n - 1) + n
14.
問題 指定された自然数の階乗を返す関数 を定義せよ
15.
階乗 f(0) = 1 f(1)
= 1 f(2) = 2 * 1 f(3) = 3 * 2 * 1 ... f(n) = n * ... * 3 * 2 * 1
16.
階乗 (一般化) f(0) =
1 f(1) = 1 * f(0) f(2) = 2 * f(1) f(3) = 3 * f(2) ... f(n) = n * f(n - 1)
17.
f(0) = 1 f(n)
= n * f(n - 1) def f(n: Int): Int = if (n = 0) 1 else n * f(n - 1)
18.
指定された数までのフィボナッチ数 列を返す関数の定義は?
19.
問題 指定されたリスト内の数の合計を返 す関数 sum を定義せよ
20.
リストの定義 • 空リスト Nil
はリスト • head が要素、tail がリストなら head :: tail もリスト 自身を使って定義されたデータ型 •再帰的なデータ型 •自己参照をするデータ型
21.
例示 1 :: 5
:: 1 :: 2 :: 8 :: Nil :: は右結合なので 1 :: (5 :: (1 :: (2 :: (8 :: Nil)))) 1 :: (5 :: 1 :: 2 :: 8 :: Nil) 5 :: (1 :: 2 :: 8 :: Nil) 1 :: (2 :: 8 :: Nil) 2 :: (8 :: Nil) 8 :: Nil
22.
一般化 sum(1 :: 5
:: 1 :: 2 :: 8 :: Nil) 1 + sum(5 :: 1 :: 2 :: 8 :: Nil) 5 + sum(1 :: 2 :: 8 :: Nil) 1 + sum(2 :: 8 :: Nil) 2 + sum(8 :: Nil) 8 + sum(Nil) sum(Nil) = 0 head + sum(tail)
23.
sum(Nil) = 0 head
+ sum(tail) def sum(list: List[Int]): Int = if (list.isEmpty) 0 else list.head + sum(list.tail) def sum(list: List[Int]): Int = list match { case Nil => 0 case head :: tail => head + sum(tail) }
24.
型にあわせて処理を行う 型が処理を導くという側面も
25.
末尾再帰や木構造の処理、Option や 例外処理のことなど他にもたくさん 話したいことはあるのですが…。
26.
お薦め書籍 Scala
ではなく OCaml だが 関数プログラミングの基礎 が身につけられる プログラミングの基礎 浅井健一 サイエンス社
27.
木虎 直樹 @kitora_naoki テキストマイニング プログラミング Scala,
Java, JavaScript, Python, OCaml インフラ network, Web, AP, RDBMS, MTA, DNS, etc.
Download