introduction to haskell@open source conference 2007 hokkaido
DESCRIPTION
A brief introduction to Haskell. The purpose of the presentation is "Read Hutton's Haskell book to learn Haskell".TRANSCRIPT
Haskell紹介池上 大介
オープンソースカンファレンス2007 Hokkaido北海道大学学術交流会館
2006-06-30 14:30-15:15 第5会議室
1
何を期待していますか?
Haskell とは何ですか? 処理系(ghcやhugsなど)を お持ちですか? モナドを使えますか? っていうかHaskellマニア?
2
知りたいことは何?関数型言語について
Haskellそのもの
ライブラリ
Haskellの学び方
ビジネス
その他
3
知りたいことは何?関数型言語について
Haskellそのもの
ライブラリ
Haskellの学び方
ビジネス
その他
本日の発表原稿
3
知りたいことは何?
その他
21%
ビジネス
18%Haskellの学び方
13%
ライブラリ
Haskellそのもの
37%
関数型言語について
5%
関数型言語について
Haskellそのもの
ライブラリ
Haskellの学び方
ビジネス
その他
本日の発表原稿
3
キャッチボール
4
キャッチボール
拾われた方はお手数ですが、持ってきてください。
4
ゲスト自己紹介
どちらからお越しですか ニックネームは Haskell 暦は
5
ゲスト自己紹介
どちらからお越しですか ニックネームは Haskell 暦は
40分おつきあいいただきます。拍手をどうぞ。
5
ゲスト自己紹介
どちらからお越しですか ニックネームは Haskell 暦は
お荷物があれば、一旦、取りに戻られてください。
40分おつきあいいただきます。拍手をどうぞ。
5
本日のお題
Haskellとは何か 2007年5月の状況 Haskell in Practice How to learn? Live Q & A
6
質問の時間があります暖めておいてください
7
その名は Haskell
H は本州の H H は北海道の H H は平和の H H は Happy の H
8
趣が違うのが Haskell
Chaos の C Jail の J Race の R Piston の P
Harmony の H9
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
Haskell の特徴 純粋関数型言語
強くて柔軟な「型」
遅延評価
プログラムは関数であり、全ての断片も関数である
変数を持たない 再代入を許さない x:=1; x++;
無限は無限としてさっぱりと扱うtake 2 [1..] --→ [1, 2]
プログラムの断片と断片が、きちんと繋がるか?
型を書くこと = プログラムの設計図後で説明
11
純粋関数型言語
強くて柔軟な「型」
遅延評価
Haskell の特徴
Simple
Smart
Clean
12
一方、皆様がお使いのプログラミング言語
にはこんな危険性があります
13
混ぜちゃえばわからない
手続き型プログラミング言語の場合C, Java, Ruby, etc...プログラムは、断片からできている各断片は、「きちんと」実装されているように見えるのかな?テストに合格すればいい混ぜちゃえばわからない
14
混ぜちゃえばわからない
手続き型プログラミング言語の場合C, Java, Ruby, etc...プログラムは、断片からできている各断片は、「きちんと」実装されているように見えるのかな?テストに合格すればいい混ぜちゃえばわからない
こんな話を、いま、北海道で言いたくありません
14
Haskellはこの問題を解決します
15
Haskell と強い型付け
プログラムは関数断片も関数
F = m a
N = kg m/s 2
運動第2法則
MKS単位系ニュートン
断片と断片を繋ぐとき、型を確認
16
Haskellが運ぶ幸せ
プログラムを書く インタプリタに渡すインタプリタが型(=単位)検査/推論インタプリタが型(=単位)検査/推論
全自動17
ここまでのまとめ
Haskell は奇抜 Haskell は全自動 Haskell は新しい!
紳士淑女のたしなみ学ぶべき言語
18
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
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
なにもかもが関数
関数かわいいよ、関数 技術ではなく、思考変換 技ではなく「道」 短く単純に簡潔に 「わび/さび」 北海道はでっかいどう
まとめ
21
今年のHaskellはどうなっているか?
22
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
お金の匂いがするのを探してみました
注:発表者は関西暦12年
24
7.1.2 Bluespec tools for design of complex chips
bluespec http://www.bluespec.com/
組込み機器は、このエラーが致命的/発見困難「タイミング」によって引き起こされるエラー
設計支援プログラムを Haskell で (85K行)25
7.1.3 Galois, Inc.
暗号と、暗号仕様記述言語 クロスドメインセキュリティ セキュアミドルウェア あらゆるツールをHaskellで Domain-Specificな言語を設計
関数型プログラマを使って新しいサービスをより早く提供
26
こんな会社も(こっそり)社内で使ってます
Microsoft Research British Airways IBM 日本はどこかの誰かがやっているはず
っていうか、「.Net Framework」対応(予定)だし。
27
Haskellで儲ける
自社内でのみ使う 正確さを求められるとき有効 工期が短いとき有効 一ヶ月工期をもらって一週間で実装(テスト要らず)残りの三週間は仕事してる「フリ」をする
おすすめのプラン
あなただけの万能ナイフとして使う28
Haskellを学ぶには?
29
日本語のHaskell文献ふつうのHaskell
入門Haskell
30
日本語のHaskell文献ふつうのHaskell
入門Haskell
紀伊国屋書店札幌店在庫はどちらも
2冊だけ
有隣堂書店(札幌大丸)は在庫切れでした
昨日13時調べ
30
本物のプログラマは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
本物のプログラマは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
初心者向けの決定版
32
33
発表者のblog経由で
Amazon お買い上げ
http://tinyurl.com/2wv7oa
約200円/人儲かりまっせ
34
Live Q & A
http://tinyurl.com/2wv7oaアサマしい奴
札幌勉強会KickOff?
35
ゲストの方に拍手をお願いします。
ありがとうございました。
36