flang kkd1
DESCRIPTION
関西関数型道場#01発表資料TRANSCRIPT
![Page 1: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/1.jpg)
1
関数型言語 Haskell 入門
関西関数型道場 #01
2014.09.06
@florets1
An introduction to Haskell for beginners
![Page 2: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/2.jpg)
2
自己紹介
@florets1
好きな言語: SQL
SQL でレコメンダー作ってみたよ
という論文を最近書きました。
お仕事:情シス
Haskell 勉強中です。
About me.
![Page 3: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/3.jpg)
3
宣伝Information
![Page 4: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/4.jpg)
4
宣伝Information
![Page 5: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/5.jpg)
5
ストーリーStory
関数型プログラミングとは
Haskell の基本的な使い方
高階関数の魅力
![Page 6: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/6.jpg)
6
関数型プログラミングとはWhat is functional programming?
関数型プログラミングとそうでないプログラミングにはどんな違いがあるのでしょうか。
手続き型プログラミングと比較してみます。
![Page 7: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/7.jpg)
7
手続き的なプログラミングProcedural programming
1 から n までの合計を求めるコード
![Page 8: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/8.jpg)
8
ループがない!
変数 i は? answer どこ?
慣れると読みやすい
関数型プログラミングFunctional programming
1 から n までの合計を求めるコード
![Page 9: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/9.jpg)
9
Haskell の基本的な使い方Haskell tutorial
関数
リスト
型
パターンマッチ
![Page 10: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/10.jpg)
10
関数を呼び出すCall functions
関数を真ん中に置ける数学っぽいね
![Page 11: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/11.jpg)
11
関数を定義するDefine a function
簡単だ!安心した
![Page 12: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/12.jpg)
12
リストというデータ構造Lists
わかる
![Page 13: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/13.jpg)
13
文字列は文字のリストStrings are just lists of characters.
Oh simple!
![Page 14: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/14.jpg)
14
こんなリストはだめLists are a homogenous data structure.
同じでないとだめなのかPython のリストとは違うんだ
![Page 15: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/15.jpg)
15
リストを連結するPutting two lists together
リストどうしを連結する
リストの先頭に要素を連結する
![Page 16: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/16.jpg)
16
リスト操作いろいろSome basic functions that operate on lists
![Page 17: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/17.jpg)
17
型宣言を明示的にAn explicit type declaration
![Page 18: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/18.jpg)
18
head 関数の型はこうなってるThe type of the head function
a は任意の型だよ
![Page 19: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/19.jpg)
19
パターンマッチ
階乗を求めるプログラム
Pattern matching
![Page 20: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/20.jpg)
20
sum と product は似ているCommon structure of functions
同じ形だ
![Page 21: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/21.jpg)
21
高階関数の魅力
コードを共通化できるねコードの意図がわかりやすい
Higher order functions: really powerful way of programming
関数の引数に関数を渡したり、返り値に関数を返したりできます
![Page 22: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/22.jpg)
22
参考文献Bibliography
Graham Hutton 著,山本和彦訳 「プログラミング Haskell 」
Miran Lipovaca 著,田中英行・村主崇行訳 「すごい Haskell たのしく学ぼう」
![Page 23: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/23.jpg)
23
宣伝Information
![Page 24: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/24.jpg)
24
宣伝Information
![Page 25: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/25.jpg)
25
宣伝Information
![Page 26: Flang kkd1](https://reader035.vdocuments.pub/reader035/viewer/2022062705/5564af90d8b42a98268b4dc1/html5/thumbnails/26.jpg)
26
宣伝Information