introduction to haskell@open source conference 2007 hokkaido

44
Haskell紹介 池上 大介 [email protected] Haskell同好会 オープンソースカンファレンス2007 Hokkaido 北海道大学学術交流会館 2006-06-30 14:30-15:15 第5会議室 1

Upload: ikegami

Post on 22-May-2015

2.317 views

Category:

Documents


0 download

DESCRIPTION

A brief introduction to Haskell. The purpose of the presentation is "Read Hutton's Haskell book to learn Haskell".

TRANSCRIPT

Page 1: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskell紹介池上 大介

[email protected]同好会

オープンソースカンファレンス2007 Hokkaido北海道大学学術交流会館

2006-06-30 14:30-15:15 第5会議室

1

Page 2: Introduction to Haskell@Open Source Conference 2007 Hokkaido

何を期待していますか?

Haskell とは何ですか? 処理系(ghcやhugsなど)を お持ちですか? モナドを使えますか? っていうかHaskellマニア?

2

Page 3: Introduction to Haskell@Open Source Conference 2007 Hokkaido

知りたいことは何?関数型言語について

Haskellそのもの

ライブラリ

Haskellの学び方

ビジネス

その他

3

Page 4: Introduction to Haskell@Open Source Conference 2007 Hokkaido

知りたいことは何?関数型言語について

Haskellそのもの

ライブラリ

Haskellの学び方

ビジネス

その他

本日の発表原稿

3

Page 5: Introduction to Haskell@Open Source Conference 2007 Hokkaido

知りたいことは何?

その他

21%

ビジネス

18%Haskellの学び方

13%

ライブラリ

Haskellそのもの

37%

関数型言語について

5%

関数型言語について

Haskellそのもの

ライブラリ

Haskellの学び方

ビジネス

その他

本日の発表原稿

3

Page 6: Introduction to Haskell@Open Source Conference 2007 Hokkaido

キャッチボール

4

Page 7: Introduction to Haskell@Open Source Conference 2007 Hokkaido

キャッチボール

拾われた方はお手数ですが、持ってきてください。

4

Page 8: Introduction to Haskell@Open Source Conference 2007 Hokkaido

ゲスト自己紹介

どちらからお越しですか ニックネームは Haskell 暦は

5

Page 9: Introduction to Haskell@Open Source Conference 2007 Hokkaido

ゲスト自己紹介

どちらからお越しですか ニックネームは Haskell 暦は

40分おつきあいいただきます。拍手をどうぞ。

5

Page 10: Introduction to Haskell@Open Source Conference 2007 Hokkaido

ゲスト自己紹介

どちらからお越しですか ニックネームは Haskell 暦は

お荷物があれば、一旦、取りに戻られてください。

40分おつきあいいただきます。拍手をどうぞ。

5

Page 11: Introduction to Haskell@Open Source Conference 2007 Hokkaido

本日のお題

Haskellとは何か 2007年5月の状況 Haskell in Practice How to learn? Live Q & A

6

Page 12: Introduction to Haskell@Open Source Conference 2007 Hokkaido

質問の時間があります暖めておいてください

7

Page 13: Introduction to Haskell@Open Source Conference 2007 Hokkaido

その名は Haskell

H は本州の H H は北海道の H H は平和の H H は Happy の H

8

Page 14: Introduction to Haskell@Open Source Conference 2007 Hokkaido

趣が違うのが Haskell

Chaos の C Jail の J Race の R Piston の P

Harmony の H9

Page 15: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskellエルは2つ

Haskell Brooks Curry (September 12, 1900, Millis, Massachusetts – September 1, 1982, State College, Pennsylvania) was an American mathematician and logician.

from en.Wikipedia.org

10

Page 16: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskell の特徴 純粋関数型言語

強くて柔軟な「型」

遅延評価

プログラムは関数であり、全ての断片も関数である

変数を持たない 再代入を許さない x:=1; x++;

無限は無限としてさっぱりと扱うtake 2 [1..] --→ [1, 2]

プログラムの断片と断片が、きちんと繋がるか?

型を書くこと = プログラムの設計図後で説明

11

Page 17: Introduction to Haskell@Open Source Conference 2007 Hokkaido

純粋関数型言語

強くて柔軟な「型」

遅延評価

Haskell の特徴

Simple

Smart

Clean

12

Page 18: Introduction to Haskell@Open Source Conference 2007 Hokkaido

一方、皆様がお使いのプログラミング言語

にはこんな危険性があります

13

Page 19: Introduction to Haskell@Open Source Conference 2007 Hokkaido

混ぜちゃえばわからない

手続き型プログラミング言語の場合C, Java, Ruby, etc...プログラムは、断片からできている各断片は、「きちんと」実装されているように見えるのかな?テストに合格すればいい混ぜちゃえばわからない

14

Page 20: Introduction to Haskell@Open Source Conference 2007 Hokkaido

混ぜちゃえばわからない

手続き型プログラミング言語の場合C, Java, Ruby, etc...プログラムは、断片からできている各断片は、「きちんと」実装されているように見えるのかな?テストに合格すればいい混ぜちゃえばわからない

こんな話を、いま、北海道で言いたくありません

14

Page 21: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskellはこの問題を解決します

15

Page 22: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskell と強い型付け

プログラムは関数断片も関数

F = m a

N = kg m/s 2

運動第2法則

MKS単位系ニュートン

断片と断片を繋ぐとき、型を確認

16

Page 23: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskellが運ぶ幸せ

プログラムを書く インタプリタに渡すインタプリタが型(=単位)検査/推論インタプリタが型(=単位)検査/推論

全自動17

Page 24: Introduction to Haskell@Open Source Conference 2007 Hokkaido

ここまでのまとめ

Haskell は奇抜 Haskell は全自動 Haskell は新しい!

紳士淑女のたしなみ学ぶべき言語

18

Page 25: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskell ってどんな感じ?

sum [] = 0 sum (x : xs) = x + sum xs

関数(=プログラム断片)定義

ϕsum = 0

sum xxs

= x + sum xs

評価sum [1, 2, 3] = { applying sum } 1 + (sum [2, 3])= { applying sum } 1 + (2 + sum [3])= { applying sum } 1 + (2 + (3 + sum []))= { applying sum } 1 + (2 + (3 + 0))= 6

19

Page 26: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskell ってどんな感じ?

qsort [] = [] qsort (x : xs) = qsort smaller ++ [x] ++ qsort largerwhere smaller = [y | y <- xs, y <= x] larger = [z | z <- xs, z > x]

関数(=プログラム断片)定義 評価qsort [3, 5, 1] = { applying qsort }qsort [1] ++ [3] ++ qsort [5] = { applying qsort }(qsort [] ++ [1] ++ qsort [])++ [3] ++(qsort [] + [5] ++ qsort [])= { applying qsort }([] ++ [1] ++ [])++ [3] ++([] ++ [5] ++ [])= { applying ++, often }[1, 3, 5]

[y | y <- xs, y <= x]

[y | y ∈ xs, y ≦ x]

20

Page 27: Introduction to Haskell@Open Source Conference 2007 Hokkaido

なにもかもが関数

関数かわいいよ、関数 技術ではなく、思考変換 技ではなく「道」 短く単純に簡潔に 「わび/さび」 北海道はでっかいどう

まとめ

21

Page 28: Introduction to Haskell@Open Source Conference 2007 Hokkaido

今年のHaskellはどうなっているか?

22

Page 29: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskell Communities and Activities ReportTwelfth edition – May 30, 2007

1. General2. Implementations3. Language4. Libraries5. Tools6. Applications7. Users

http://www.haskell.org/communities/

Andres Lӧf (ed.) と約90名の皆様が執筆

A4サイズで82枚

23

Page 30: Introduction to Haskell@Open Source Conference 2007 Hokkaido

お金の匂いがするのを探してみました

注:発表者は関西暦12年

24

Page 31: Introduction to Haskell@Open Source Conference 2007 Hokkaido

7.1.2 Bluespec tools for design of complex chips

bluespec http://www.bluespec.com/

組込み機器は、このエラーが致命的/発見困難「タイミング」によって引き起こされるエラー

設計支援プログラムを Haskell で (85K行)25

Page 32: Introduction to Haskell@Open Source Conference 2007 Hokkaido

7.1.3 Galois, Inc.

暗号と、暗号仕様記述言語 クロスドメインセキュリティ セキュアミドルウェア あらゆるツールをHaskellで Domain-Specificな言語を設計

関数型プログラマを使って新しいサービスをより早く提供

26

Page 33: Introduction to Haskell@Open Source Conference 2007 Hokkaido

こんな会社も(こっそり)社内で使ってます

Microsoft Research British Airways IBM 日本はどこかの誰かがやっているはず

っていうか、「.Net Framework」対応(予定)だし。

27

Page 34: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskellで儲ける

自社内でのみ使う 正確さを求められるとき有効 工期が短いとき有効 一ヶ月工期をもらって一週間で実装(テスト要らず)残りの三週間は仕事してる「フリ」をする

おすすめのプラン

あなただけの万能ナイフとして使う28

Page 35: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Haskellを学ぶには?

29

Page 36: Introduction to Haskell@Open Source Conference 2007 Hokkaido

日本語のHaskell文献ふつうのHaskell

入門Haskell

30

Page 37: Introduction to Haskell@Open Source Conference 2007 Hokkaido

日本語のHaskell文献ふつうのHaskell

入門Haskell

紀伊国屋書店札幌店在庫はどちらも

2冊だけ

有隣堂書店(札幌大丸)は在庫切れでした

昨日13時調べ

30

Page 38: Introduction to Haskell@Open Source Conference 2007 Hokkaido

本物のプログラマはHaskellを使う

Haskell Wiki (日本語)

Haskell メーリングリスト

日本語のHaskell文献

http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/

http://tinyurl.com/2c9pxq

http://www.sampou.org/cgi-bin/haskell.cgi

http://tinyurl.com/yrhozj

31

Page 39: Introduction to Haskell@Open Source Conference 2007 Hokkaido

本物のプログラマはHaskellを使う

Haskell Wiki (日本語)

Haskell メーリングリスト

日本語のHaskell文献

http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/

http://tinyurl.com/2c9pxq

http://www.sampou.org/cgi-bin/haskell.cgi

http://tinyurl.com/yrhozj

Google で検索しよう31

Page 40: Introduction to Haskell@Open Source Conference 2007 Hokkaido

初心者向けの決定版

32

Page 41: Introduction to Haskell@Open Source Conference 2007 Hokkaido

33

Page 42: Introduction to Haskell@Open Source Conference 2007 Hokkaido

発表者のblog経由で

Amazon お買い上げ

http://tinyurl.com/2wv7oa

約200円/人儲かりまっせ

34

Page 43: Introduction to Haskell@Open Source Conference 2007 Hokkaido

Live Q & A

http://tinyurl.com/2wv7oaアサマしい奴

札幌勉強会KickOff?

35

Page 44: Introduction to Haskell@Open Source Conference 2007 Hokkaido

ゲストの方に拍手をお願いします。

ありがとうございました。

36