関数型プログラミングのすゝめ
DESCRIPTION
関数型プログラミングをしましょう。TRANSCRIPT
関数型プログラミングのすゝめ
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
計算機科学
質問はありますか?