SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
関数型プログラミングのすゝめ
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
計算機科学
質問はありますか?

Más contenido relacionado

Más de Yusuke Matsushita

NPC April Fool's Contest 2014 累乗数
NPC April Fool's Contest 2014 累乗数NPC April Fool's Contest 2014 累乗数
NPC April Fool's Contest 2014 累乗数Yusuke Matsushita
 
型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへ型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへYusuke Matsushita
 
Modeling Concurrent Computing
Modeling Concurrent ComputingModeling Concurrent Computing
Modeling Concurrent ComputingYusuke Matsushita
 
Programmers, be a Wikipedian
Programmers, be a WikipedianProgrammers, be a Wikipedian
Programmers, be a WikipedianYusuke Matsushita
 
プログラミング・パラダイム
プログラミング・パラダイムプログラミング・パラダイム
プログラミング・パラダイムYusuke Matsushita
 

Más de 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入門
 
確率解析計算
確率解析計算確率解析計算
確率解析計算
 
プログラミング・パラダイム
プログラミング・パラダイムプログラミング・パラダイム
プログラミング・パラダイム
 

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