SlideShare ist ein Scribd-Unternehmen logo
1 von 24
Downloaden Sie, um offline zu lesen
関数型プログラミングのすゝめ
kinokkory
kinokkory
• @shiatsumat
• 情報オリンピックのファイナリスト
• HaskellとC#とC++が得意
• 「圏論によるプログラミングと論理」の
執筆者
yingtai
• @__int
• 文学と哲学に詳しい知識人
• Haskellが得意
• 「圏論によるプログラミングと論理」の
執筆者
stibear
• @stibear1996
• ちゃたいを操る仙人
• Lispが得意
• 「マクロのおはなし」の執筆者
君は
関数型プログラミングを
知っていますか?
関数型プログラミング
• 根本的にほかのものと違う
• あなたの人生を変える
• 美しく秩序のあるプログラミング
関数型言語
• Haskell
• Lisp
• F#
• OCaml
• Scala
• Erlang
• などなど
Haskell
• 初心者でも扱いやすい
• 面白い機能の宝庫
• 「Haskellやってます」と言うだけで
凄いプログラマーに見える
Haskell
• 強い型付けで安全なコードが書ける
• 遅延評価で高速化できる
• 簡潔な記述ができる
Haskell
• Haskellは非常に美しい
main = print $ fibs !! 1000000
where fibs = 0 : 1 :
zipWith (¥x y-> mod (x+y) 1000009) fibs (tail fibs)
Haskell
• C言語は美しくない
#include <stdio.h>
int main()
{
int a=1, b=1, i, buf;
for(i=3;i<=1000000;i++){
buf=(a+b)%1000009;
a=b;
b=buf;
}
printf("%d¥n",b);
return 0;
}
Haskell
• 便利な機能がたくさん
– 強力な型システム
– 参照透明性
– 遅延評価
– パターンマッチ
– Template Haskell
Haskell大好き
• kinokkoryもyingtaiもHaskell大好き
• poteti部長もHaskell大好き
• わあいHaskell大好きHaskell大好き
Lisp
• 先々代の部長はLisper
• C言語より先に生まれた歴史ある言語
• 計算機科学の教授は割と使う
• 詳しくはstibearに聞こう
関数型プログラミング
• 実は神秘の力に操られています
• その神秘の力を理解すれば
どんなプログラミング言語も
自由自在に操れるようになります
• その神秘の力というのが......
計算機科学
計算機科学
• 英語ではComputer Science
• プログラミング言語やアルゴリズムの
研究などを行っている
計算機科学は楽しい
• 計算機科学は奥深い
• 計算機科学は美しい
• 計算機科学は数学的
• 計算機科学はパズル的
計算機科学の分野
• 型理論
• プログラム意味論
• 計算モデル
• 計算可能性理論
• 計算複雑性理論
定理証明支援系
• 計算機科学と論理学のタッグの賜物
• 型理論が深く関わっている
• CoqやAgdaなどがある
• 証明をプログラムとして表して
コンピューター上で定理を証明できる
関数型プログラミング
Haskell
計算機科学
質問はありますか?

Weitere ähnliche Inhalte

Mehr von Yusuke Matsushita (11)

NPC April Fool's Contest 2014 累乗数
NPC April Fool's Contest 2014 累乗数NPC April Fool's Contest 2014 累乗数
NPC April Fool's Contest 2014 累乗数
 
Haskell Lecture 2
Haskell Lecture 2Haskell Lecture 2
Haskell Lecture 2
 
Haskell Lecture 1
Haskell Lecture 1Haskell Lecture 1
Haskell Lecture 1
 
ドロネー三角形分割
ドロネー三角形分割ドロネー三角形分割
ドロネー三角形分割
 
型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへ型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへ
 
C#への招待
C#への招待C#への招待
C#への招待
 
Modeling Concurrent Computing
Modeling Concurrent ComputingModeling Concurrent Computing
Modeling Concurrent Computing
 
Programmers, be a Wikipedian
Programmers, be a WikipedianProgrammers, be a Wikipedian
Programmers, be a Wikipedian
 
OpenMPI入門
OpenMPI入門OpenMPI入門
OpenMPI入門
 
確率解析計算
確率解析計算確率解析計算
確率解析計算
 
プログラミング・パラダイム
プログラミング・パラダイムプログラミング・パラダイム
プログラミング・パラダイム
 

Kürzlich hochgeladen

Kürzlich hochgeladen (11)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
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...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 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
 
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
 

関数型プログラミングのすゝめ