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

More Related Content

Similar to Flang kkd1

Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていることSwiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていることShingo Sato
 
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~Fujio Kojima
 
Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~Kai Sasaki
 
数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由Hiromi Ishii
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documentsbleis tift
 
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"Keisuke Takahashi
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScalatakezoe
 
並行プログラミング with Haskell
並行プログラミング with Haskell並行プログラミング with Haskell
並行プログラミング with Haskellcoil_kpc
 
Linq to XXXX(Reactive Extensionsの紹介)
Linq to XXXX(Reactive Extensionsの紹介)Linq to XXXX(Reactive Extensionsの紹介)
Linq to XXXX(Reactive Extensionsの紹介)Hiroshi Maekawa
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scalatakezoe
 
Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門Yuichiro Takahashi
 
Javascriptで学ぶ Functional Programming
Javascriptで学ぶ Functional ProgrammingJavascriptで学ぶ Functional Programming
Javascriptで学ぶ Functional Programmingtodorokit
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and designTomoharu ASAMI
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみてKota Mizushima
 
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Tsunenori Oohara
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Shuya Tsukamoto
 
「7つの言語、7つの世界」を読む
「7つの言語、7つの世界」を読む「7つの言語、7つの世界」を読む
「7つの言語、7つの世界」を読むNobutada Matsubara
 
プログラミングHaskell(第1章)
プログラミングHaskell(第1章)プログラミングHaskell(第1章)
プログラミングHaskell(第1章)yaju88
 

Similar to Flang kkd1 (20)

Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていることSwiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
 
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
最新C#動向と関数型言語haskell ~命令型静的プログラミングから関数型動的プログラミングへのシフト~
 
Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~Spark MLlib code reading ~optimization~
Spark MLlib code reading ~optimization~
 
数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由数学プログラムを Haskell で書くべき 6 の理由
数学プログラムを Haskell で書くべき 6 の理由
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
 
Scala入門
Scala入門Scala入門
Scala入門
 
パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"パーフェクト"Elixir情報収集"
パーフェクト"Elixir情報収集"
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
並行プログラミング with Haskell
並行プログラミング with Haskell並行プログラミング with Haskell
並行プログラミング with Haskell
 
Linq to XXXX(Reactive Extensionsの紹介)
Linq to XXXX(Reactive Extensionsの紹介)Linq to XXXX(Reactive Extensionsの紹介)
Linq to XXXX(Reactive Extensionsの紹介)
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
 
Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門Scalaで学ぶ関数型超入門
Scalaで学ぶ関数型超入門
 
Elm overview
Elm overviewElm overview
Elm overview
 
Javascriptで学ぶ Functional Programming
Javascriptで学ぶ Functional ProgrammingJavascriptで学ぶ Functional Programming
Javascriptで学ぶ Functional Programming
 
Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
 
Scala Daysに行ってみて
Scala Daysに行ってみてScala Daysに行ってみて
Scala Daysに行ってみて
 
Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11Elixirハンズオン-2017-03-11
Elixirハンズオン-2017-03-11
 
Scala勉強会_2014_11_18
Scala勉強会_2014_11_18Scala勉強会_2014_11_18
Scala勉強会_2014_11_18
 
「7つの言語、7つの世界」を読む
「7つの言語、7つの世界」を読む「7つの言語、7つの世界」を読む
「7つの言語、7つの世界」を読む
 
プログラミングHaskell(第1章)
プログラミングHaskell(第1章)プログラミングHaskell(第1章)
プログラミングHaskell(第1章)
 

More from florets1

Mad kobe.r14
Mad kobe.r14Mad kobe.r14
Mad kobe.r14florets1
 
Bra kobe.r12
Bra kobe.r12Bra kobe.r12
Bra kobe.r12florets1
 
Osaka prml reading_3.2-3.3.1
Osaka prml reading_3.2-3.3.1Osaka prml reading_3.2-3.3.1
Osaka prml reading_3.2-3.3.1florets1
 
Eic kobe.r9
Eic kobe.r9Eic kobe.r9
Eic kobe.r9florets1
 
Mle kobe.r8
Mle kobe.r8Mle kobe.r8
Mle kobe.r8florets1
 
Bgnd kobe.r5
Bgnd kobe.r5Bgnd kobe.r5
Bgnd kobe.r5florets1
 
Osaka prml reading_2.3.1-2
Osaka prml reading_2.3.1-2Osaka prml reading_2.3.1-2
Osaka prml reading_2.3.1-2florets1
 
Qsim kobe.r4
Qsim kobe.r4Qsim kobe.r4
Qsim kobe.r4florets1
 
Ciit kobe.r1
Ciit kobe.r1Ciit kobe.r1
Ciit kobe.r1florets1
 
Osaka prml reading_2.3
Osaka prml reading_2.3Osaka prml reading_2.3
Osaka prml reading_2.3florets1
 

More from florets1 (10)

Mad kobe.r14
Mad kobe.r14Mad kobe.r14
Mad kobe.r14
 
Bra kobe.r12
Bra kobe.r12Bra kobe.r12
Bra kobe.r12
 
Osaka prml reading_3.2-3.3.1
Osaka prml reading_3.2-3.3.1Osaka prml reading_3.2-3.3.1
Osaka prml reading_3.2-3.3.1
 
Eic kobe.r9
Eic kobe.r9Eic kobe.r9
Eic kobe.r9
 
Mle kobe.r8
Mle kobe.r8Mle kobe.r8
Mle kobe.r8
 
Bgnd kobe.r5
Bgnd kobe.r5Bgnd kobe.r5
Bgnd kobe.r5
 
Osaka prml reading_2.3.1-2
Osaka prml reading_2.3.1-2Osaka prml reading_2.3.1-2
Osaka prml reading_2.3.1-2
 
Qsim kobe.r4
Qsim kobe.r4Qsim kobe.r4
Qsim kobe.r4
 
Ciit kobe.r1
Ciit kobe.r1Ciit kobe.r1
Ciit kobe.r1
 
Osaka prml reading_2.3
Osaka prml reading_2.3Osaka prml reading_2.3
Osaka prml reading_2.3
 

Recently uploaded

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 

Recently uploaded (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

Flang kkd1