関数型言語のすすめ

64
関数型言語のすすめ bleis-tift Marh, 26 2011

Upload: bleis-tift

Post on 17-Dec-2014

3.439 views

Category:

Technology


4 download

DESCRIPTION

高専カンファレンス in 三重の発表資料です。

TRANSCRIPT

Page 1: 関数型言語のすすめ

関数型言語のすすめ

bleis-tift

Marh, 26 2011

Page 2: 関数型言語のすすめ

自己紹介

id:bleis-tift / @bleis

名古屋 Scala勉強会 / F# User Group /TDDBC

Gitの人、SQLの人、C#の人鈴鹿高専電子情報工学科卒業生

元担当教官の前で発表とかどんな拷問・・・

Page 3: 関数型言語のすすめ

自己紹介

id:bleis-tift / @bleis

名古屋 Scala勉強会 / F# User Group /TDDBC

Gitの人、SQLの人、C#の人鈴鹿高専電子情報工学科卒業生元担当教官の前で発表とかどんな拷問・・・

Page 4: 関数型言語のすすめ

気を取り直して・・・

みなさん勉強会行きますよね?三重から名古屋って近いですよね?てことは・・・

名古屋の勉強会行きますよね?

Page 5: 関数型言語のすすめ

気を取り直して・・・

みなさん勉強会行きますよね?

三重から名古屋って近いですよね?てことは・・・

名古屋の勉強会行きますよね?

Page 6: 関数型言語のすすめ

気を取り直して・・・

みなさん勉強会行きますよね?三重から名古屋って近いですよね?

てことは・・・

名古屋の勉強会行きますよね?

Page 7: 関数型言語のすすめ

気を取り直して・・・

みなさん勉強会行きますよね?三重から名古屋って近いですよね?てことは・・・

名古屋の勉強会行きますよね?

Page 8: 関数型言語のすすめ

気を取り直して・・・

みなさん勉強会行きますよね?三重から名古屋って近いですよね?てことは・・・

名古屋の勉強会行きますよね?

Page 9: 関数型言語のすすめ

ようこそ、名古屋の勉強会へ!

名古屋の勉強会の特徴をお教えします!

Page 10: 関数型言語のすすめ

ようこそ、名古屋の勉強会へ!

名古屋の勉強会の特徴をお教えします!

Page 11: 関数型言語のすすめ

2月26日

名古屋Ruby会議 02開催!それと併設で名古屋Reject会議なる怪しい集い・・・

Page 12: 関数型言語のすすめ

2月26日

名古屋Ruby会議 02開催!

それと併設で名古屋Reject会議なる怪しい集い・・・

Page 13: 関数型言語のすすめ

2月26日

名古屋Ruby会議 02開催!それと併設で名古屋Reject会議なる怪しい集い・・・

Page 14: 関数型言語のすすめ

名古屋Reject会議@bleis「そうだ、bf処理系つくろう!もちろん SQLで!」

@sunflat「Amazon EC2にサーバを移転してみた」

@yoya「PHP: ZendEngineの話」

@terurou「CommonJSの話」

@nari3「GC本スピンオフ」

@mallowlabs「AsakusaSatelliteの紹介」

@yoshihiro503「初音ミクと Coqの類似性について」

@mzp「証明駆動の楽しみ」

@wof moriguchi「F#による関数プログラミング」

@keigoi「ocamljsの話」

@osiire「GADTブランチの今」

@kaizen nagoya「プログラミング教育の XYZ」

@dico leque「Meta-object Lisp」

Page 15: 関数型言語のすすめ

名古屋Reject会議@bleis「そうだ、bf処理系つくろう!もちろん SQLで!」

@sunflat「Amazon EC2にサーバを移転してみた」

@yoya「PHP: ZendEngineの話」

@terurou「CommonJSの話」

@nari3「GC本スピンオフ」

@mallowlabs「AsakusaSatelliteの紹介」

@yoshihiro503「初音ミクと Coqの類似性について」

@mzp「証明駆動の楽しみ」

@wof moriguchi「F#による関数プログラミング」

@keigoi「ocamljsの話」

@osiire「GADTブランチの今」

@kaizen nagoya「プログラミング教育の XYZ」

@dico leque「Meta-object Lisp」

Page 16: 関数型言語のすすめ

約半分が関数型言語にかかわる発表

Page 17: 関数型言語のすすめ

約半分が関数型言語にかかわる発表

Page 18: 関数型言語のすすめ

さらに本会まで侵略・・・

@mzp「Coq to Rubyによる証明駆動開発」

Page 19: 関数型言語のすすめ

さらに本会まで侵略・・・@mzp「Coq to Rubyによる証明駆動開発」

Page 20: 関数型言語のすすめ

名古屋では関数型言語が人気!

その中でも静的型付けの関数型言語が熱い!OCamlとかHaskellとかそのあたりTwitterにいる名古屋の関数型言語使いを見てみましょう

Page 21: 関数型言語のすすめ

名古屋では関数型言語が人気!

その中でも静的型付けの関数型言語が熱い!

OCamlとかHaskellとかそのあたりTwitterにいる名古屋の関数型言語使いを見てみましょう

Page 22: 関数型言語のすすめ

名古屋では関数型言語が人気!

その中でも静的型付けの関数型言語が熱い!OCamlとかHaskellとかそのあたり

Twitterにいる名古屋の関数型言語使いを見てみましょう

Page 23: 関数型言語のすすめ

名古屋では関数型言語が人気!

その中でも静的型付けの関数型言語が熱い!OCamlとかHaskellとかそのあたりTwitterにいる名古屋の関数型言語使いを見てみましょう

Page 24: 関数型言語のすすめ
Page 25: 関数型言語のすすめ
Page 26: 関数型言語のすすめ
Page 27: 関数型言語のすすめ
Page 28: 関数型言語のすすめ

このように

名古屋では静的型付けの関数型言語使いが圧倒的多数なので、名古屋で関数型言語と言えば静的型付けと思っていい面倒なので以降「静的型付けの」は省略

Page 29: 関数型言語のすすめ

このように

名古屋では静的型付けの関数型言語使いが圧倒的多数

なので、名古屋で関数型言語と言えば静的型付けと思っていい面倒なので以降「静的型付けの」は省略

Page 30: 関数型言語のすすめ

このように

名古屋では静的型付けの関数型言語使いが圧倒的多数なので、名古屋で関数型言語と言えば静的型付けと思っていい

面倒なので以降「静的型付けの」は省略

Page 31: 関数型言語のすすめ

このように

名古屋では静的型付けの関数型言語使いが圧倒的多数なので、名古屋で関数型言語と言えば静的型付けと思っていい面倒なので以降「静的型付けの」は省略

Page 32: 関数型言語のすすめ

動的型付けの関数型言語使いの方たちも・・・

Page 33: 関数型言語のすすめ

動的型付けの関数型言語使いの方たちも・・・

Page 34: 関数型言語のすすめ

動的型付けの関数型言語使いの方たちも・・・

Page 35: 関数型言語のすすめ

つまりどういうことだってばよ?

関数型言語が使えると名古屋の勉強会ライフが

より楽しく!

Page 36: 関数型言語のすすめ

つまりどういうことだってばよ?

関数型言語が使えると名古屋の勉強会ライフが

より楽しく!

Page 37: 関数型言語のすすめ

なんでこんなに人気なの?

Page 38: 関数型言語のすすめ

関数型言語が熱い理由

その1、型推論

Page 39: 関数型言語のすすめ

関数型言語が熱い理由

その1、型推論

Page 40: 関数型言語のすすめ

型推論

型に守られていながら、型推論によってみんなハッピー!

.

型推論(OCaml)

.

.

.

let f a = a + 10

(+)は intを 2つ取って intを返すつまり aは int型(+)の結果を返しているので fの戻り値の型は int

fは intを 1つ取って intを返す関数

型を書いていないのに関数の型を決定できた!

Page 41: 関数型言語のすすめ

型推論

型に守られていながら、型推論によってみんなハッピー!

.

型推論(OCaml)

.

.

.

let f a = a + 10

(+)は intを 2つ取って intを返すつまり aは int型(+)の結果を返しているので fの戻り値の型は int

fは intを 1つ取って intを返す関数

型を書いていないのに関数の型を決定できた!

Page 42: 関数型言語のすすめ

型推論

型に守られていながら、型推論によってみんなハッピー!

.

型推論(OCaml)

.

.

.

let f a = a + 10

(+)は intを 2つ取って intを返す

つまり aは int型(+)の結果を返しているので fの戻り値の型は int

fは intを 1つ取って intを返す関数

型を書いていないのに関数の型を決定できた!

Page 43: 関数型言語のすすめ

型推論

型に守られていながら、型推論によってみんなハッピー!

.

型推論(OCaml)

.

.

.

let f a = a + 10

(+)は intを 2つ取って intを返すつまり aは int型

(+)の結果を返しているので fの戻り値の型は int

fは intを 1つ取って intを返す関数

型を書いていないのに関数の型を決定できた!

Page 44: 関数型言語のすすめ

型推論

型に守られていながら、型推論によってみんなハッピー!

.

型推論(OCaml)

.

.

.

let f a = a + 10

(+)は intを 2つ取って intを返すつまり aは int型(+)の結果を返しているので fの戻り値の型は int

fは intを 1つ取って intを返す関数

型を書いていないのに関数の型を決定できた!

Page 45: 関数型言語のすすめ

型推論

型に守られていながら、型推論によってみんなハッピー!

.

型推論(OCaml)

.

.

.

let f a = a + 10

(+)は intを 2つ取って intを返すつまり aは int型(+)の結果を返しているので fの戻り値の型は int

fは intを 1つ取って intを返す関数

型を書いていないのに関数の型を決定できた!

Page 46: 関数型言語のすすめ

型推論

型に守られていながら、型推論によってみんなハッピー!

.

型推論(OCaml)

.

.

.

let f a = a + 10

(+)は intを 2つ取って intを返すつまり aは int型(+)の結果を返しているので fの戻り値の型は int

fは intを 1つ取って intを返す関数

型を書いていないのに関数の型を決定できた!

Page 47: 関数型言語のすすめ

関数型言語が熱い理由

その2、型が軽い

Page 48: 関数型言語のすすめ

型が軽い

気軽に型を定義することができてみんなハッピー!

Page 49: 関数型言語のすすめ

型が軽い

気軽に型を定義することができてみんなハッピー!

Page 50: 関数型言語のすすめ

C#のばあい

Page 51: 関数型言語のすすめ

C#のばあい

長い・・・

Page 52: 関数型言語のすすめ

C#のばあい

長い・・・

Page 53: 関数型言語のすすめ

Rubyのばあい

Page 54: 関数型言語のすすめ

Rubyのばあい

タイプ数は減ったけど行数は変わってない・・・

Page 55: 関数型言語のすすめ

Rubyのばあい

タイプ数は減ったけど行数は変わってない・・・

Page 56: 関数型言語のすすめ

F#のばあい

Page 57: 関数型言語のすすめ

F#のばあい

短い!

Page 58: 関数型言語のすすめ

F#のばあい

短い!

Page 59: 関数型言語のすすめ

型が軽い

こんな感じで気軽に型が作れる!

Page 60: 関数型言語のすすめ

関数型言語が熱い理由

その3、安全

Page 61: 関数型言語のすすめ

安全

NullPointerExceptionが発生しないからみんなハッピー!

Page 62: 関数型言語のすすめ

え、あ。もうすぐ時間ですか?

残念!続きは懇親会もしくは名古屋の勉強会で!

Page 63: 関数型言語のすすめ

え、あ。もうすぐ時間ですか?残念!続きは懇親会もしくは名古屋の勉強会で!

Page 64: 関数型言語のすすめ

関数型言語を学んで名古屋の勉強会ライフを楽しもう!