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

Object-Funcational Analysis and design
Object-Funcational Analysis and designObject-Funcational Analysis and design
Object-Funcational Analysis and design
Tomoharu ASAMI
 
プログラミング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 (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

Recently uploaded (10)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介: 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
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: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...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: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の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

Flang kkd1