SlideShare a Scribd company logo
1 of 38
Download to read offline
ラムダでウィザード
滅せよ手続き、とチャーチは言った
(※言ってません)
bleis-tift
July 20, 2013
自己紹介
id:bleis-tift / @bleis
なごやではたらくゆるふわ.NETer
好きな関数型言語は F#
Microsoft MVP for Visual F#
.NETの基礎ということで・・・
IL・・・?そんなこわいことこわい人がいっぱい
来ること確定な場所で話せません><。
.NET と言えば F#ですよねー (異論は認める
F#の基礎と言えばラムダ計算ですよねー
(.NET 基礎ならなごやこわいは参加しないだ
ろうし、これにしよう!)
どうしてこうなった・・・
今日やること
ラムダ計算って何?
ラムダ計算で計算してみる
ラムダ計算を拡張してみる
ラムダ計算を知らない人を対象に、ラムダ計算が
ナニモノなのかの感覚を掴んでもらうのが目的!
こわい人がそこらじゅうにいるからgkbr
ラムダ計算って何?
その前に
関数型言語って何?
関数型言語とは
ある人曰く、「それぞれの人が色々な特徴か
ら適当なサブセットを選んで関数型と呼ぶ」
ある人曰く、「永続的データ構造を扱う言
語だ」
ある人曰く、「そんなものはない。あるのは
関数プログラミングというスタイルだけだ」
「この言語は関数型言語だ!」という判断は各人に
任せるとして、個人的には「ラムダ計算に基づく
言語」は関数型言語でいいのでは?と思ってます。
よくある(かもしれない)誤解
「ラムダ計算に基づく言語」は関数型言語
→ ラムダ式を持っていれば関数型言語だ?
今日はこの(ないかもしれない)誤
解を解きに来ました!
ラムダ計算とは
すごくシンプルなプログラミング言語
文法がシンプル
予約語は λ だけ
関数しかない
真偽値も、数も、条件分岐も、ループも、全部関
数で表す
色々な関数型言語の基礎になっている
ラムダ計算の文法
ラムダ計算のプログラムは一つの項 (式と思って
もらえれば) として表されます
項の要素になれるのは、以下の 3 つだけです
名前 ・・・・・・・・・・・変数
(項 項)・・・関数適用
(λ名前. 項)・・・ラムダ抽象
名前には、英字一文字を使うことが多いです。
ラムダ計算の項として有効なもの
以下の文字列の並びは、ラムダ計算の項として有
効です
x
(f x)
(λx.x)
(λf.(λx.(f x)))
カッコの省略
.
.(λf.(λx.(f x)))
の一番外側のカッコと一番内側のカッコは取り除
いても曖昧になりません。
.
.λf.(λx.f x)
以降では、曖昧性のないカッコは省略します。
文法のおさらい
.
ラムダ計算の文法
..
.
t ::= < name >
| (< t > < t >)
| (λ < name > . < t >)
数値はおろか、真偽値などもない
変数が導入されるのはラムダ式の引数のみ
値はラムダ抽象 (つまり関数) のみ!
ラムダ計算の意味
文法を定義しただけでは何の役にも立たない
ので、意味を与えてあげましょう!
ラムダ計算における計算
ラムダ計算における計算とは、引数に関数を適用
することです。
t1 t2 という項があった時に、t1 がラムダ抽象だっ
た場合に、ラムダ抽象の中の項に現れる引数を t2
で置き換えます。
.
例えばこんな
..
.
(λx.x) (λy.λz.(y z))
↓下線を引いた項に引数を与えて簡約
λy.λz.(y z)
簡約の方法
簡約の方法にはいろいろありますが、ここでは皆
さんになじみの深い方法を採用します。
t1 t2 という項があった時、
t1 から先に簡約する
t2 の簡約を終えてから、全体を簡約する
という方法で、「値呼び戦略」と呼ばれます。
では・・・
文法が分かり、意味も与えたところで、実際にこ
れを使って計算してみましょう!
ラムダ計算で計算してみる
無理・・・
数も扱えないのにどうやって計算するんですか・・・
ということで、まずは道具を揃えましょう!
カリー化関数
ラムダ計算では複数引数を受け取る関数はないの
で、関数を返す関数をよく使います。
.
カリー化関数 λx.λy.x に λa.a と λb.b を渡す
..
.
(λx.λy.x) (λa.a) (λb.b)
−→ (λy.(λa.a)) (λb.b)
−→ λa.a
λx.(λy.x) 自体は関数を返す関数だけど、2 つの引
数をとる関数と同じような働きをする!
カリー化関数の略記法
いちいちカリー化関数書くの面倒なので、略記法
を導入します。
.
上と下の記述は交換可能
..
.
λx.λy.t
λxy.t
真偽値
関数で表しましょう。
.
真偽値を表す関数
..
.
真:λtf.t
偽:λtf.f
なんでこれが真偽値?
真偽値(2)
真が λtf.t、偽が λtf.f だったとして、
if cond then x else y を、cond x y とする
cond に真を入れてみる
((λtf.t) x) y
(λf.x) y
x
cond に偽を入れてみる
((λtf.f) x) y
(λf.f) y
y
真偽値として働いている!
自然数
真偽値同様、関数で表現します。
.
自然数を表す関数
..
.
0:λsz.z
1:λsz.s z
2:λsz.s (s z)
3:λsz.s (s (s z)))
z に s を何回適用するかで自然数を表します。
指で数を数えるのに似てますね。
次の数を求める関数 succ
.
succ 関数
..
.λn.λsz.s (n s z)
1. 自然数 n は λsz.t の形をしている
2. n に s と z を渡せば、t の部分が取り出せる
3. t にもう一回 s を適用すれば、次の数になる!
足し算してみる
.
add 関数
..
.λmn.λsz.m s (n s z)
1. 自然数 m は λsz.s (s (. . . (s z) . . . )) の形を
している (s は m 個)
2. 自然数 n は λsz.t の形をしている
(t には n 個の s が含まれる)
3. 自然数 m の z 部分を n の t 部分に入れ替え
れば、足し算ができる!
2 + 3
1. (λmn.λsz.m s (n s z)) (λsz.s (s z)) (λsz.s (s (s z)))
2. (λn.λsz.(λsz.s (s z)) s (n s z)) (λsz.s (s (s z)))
3. λsz.(λsz.s (s z)) s ((λsz.s (s (s z))) s z)
4. λsz.(λz.s (s z)) ((λsz.s (s (s z))) s z)
5. λsz.(λz.s (s z)) ((λz.s (s (s z))) z)
6. λsz.(λz.s (s z)) ((s (s (s z))))
7. λsz.(λz.s (s z)) (s (s (s z)))
8. λsz.(s (s (s (s (s z)))))
s が 5 個あるので、2 + 3 できました!
掛け算してみる
.
mul 関数
..
.λmn.λsz.m (n s) z
1. 自然数 n は λsz.s (s (. . . (s z) . . . )) の形をし
ている (s は n 個)
2. 自然数 n に s だけ適用したものは、引数に s
を n 回適用する関数になる
3. それを自然数 m の s として渡すので、s を
n 回適用したものが m 個作られる
4. それに z を渡してあげれば、
m と n を掛け合わせた結果の自然数になる!
2 × 3
1. (λmn.λsz.m (n s) z) (λsz.s (s z)) (λsz.s (s (s z)))
2. (λn.λsz.(λsz.s (s z)) (n s) z) (λsz.s (s (s z)))
3. λsz.(λsz.s (s z)) ((λsz.s (s (s z))) s) z
4. λsz.(λsz.s (s z)) (λz.s (s (s z))) z
5. λsz.(λz.(λz.s (s (s z))) ((λz.s (s (s z))) z)) z
6. λsz.(λz.(λz.s (s (s z))) (s (s (s z)))) z
7. λsz.(λz.(s (s (s (s (s (s z))))))) z
8. λsz.(s (s (s (s (s (s z))))))
s が 6 個あるので、2 × 3 できました!
そのほかの計算
以下の話題は時間の関係上、省略します。
自然数の引き算、割り算
再帰
Church-Rosser 性
ラムダ計算を拡張してみる
ラムダ計算の拡張
さすがに、生のラムダ計算を扱うのはつらい
→拡張しましょう!
記法の拡張
2 + 3 を計算するだけで、
.
2 + 3
..
.(λmn.λsz.m s (n s z)) (λsz. s (s z)) (λsz.s (s (s z))))
つらい・・・
数値の導入
数詞 (0 とか 1 とかそういうやつ) と関数で作った
自然数を対応付けることができる。
2 に対して λsz.s (s z)) を対応付けるようにすれ
ば、人間にとってよりわかりやすい!
ついでに、+ も λmn.λsz.m s (n s z) に対応付け
てしまえば、2 + 3 はそのまま、
.
.2 + 3
と記述できる! n に 2 を足す関数なら、
.
.λn.n + 2
分かりやすい!
真偽値の導入
ついでに真偽値も導入しましょう。
true と λtf.t を、false と λtf.f を対応付けます。
if-then-else も導入しましょう。
とりあえず、if cond then x else y を、cond x y
に対応付けましょう。
.
if-then-else を使った例
..
.λbmn.if b then m + n else m ∗ n
b が真なら m + n を、偽なら m ∗ n を計算する
関数
計算体系の拡張
記法だけじゃなくて、計算体系も拡張しましょう!
型の導入
本当はここからの話をしようかな、と思ってたん
ですが・・・
色んな意味で時間がなかったので、ここからの拡
張は各自の課題ということで。
詳しくは、
をどうぞ!
宣伝!
この後の懇親会で、ちょうどその本の読書会があ
るそうですよ!
興味のある人はオーム社のサイトから PDF 版を購
入して参加しましょう!

More Related Content

What's hot

ドッターのためのプログラミングなにそれおいしいの
ドッターのためのプログラミングなにそれおいしいのドッターのためのプログラミングなにそれおいしいの
ドッターのためのプログラミングなにそれおいしいのmanaten
 
ドッターのためのプログラミングなにそれおいしいの
ドッターのためのプログラミングなにそれおいしいのドッターのためのプログラミングなにそれおいしいの
ドッターのためのプログラミングなにそれおいしいのheriet
 
VBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターンVBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターンKatsuhiro Morishita
 
PRML読書会#2,#3資料
PRML読書会#2,#3資料PRML読書会#2,#3資料
PRML読書会#2,#3資料Hiromasa Ohashi
 
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxeオブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxeterurou
 
はんなりPython#42 20210629
はんなりPython#42 20210629はんなりPython#42 20210629
はんなりPython#42 20210629takey Takesue
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式pocketberserker
 
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~MrUnadon
 
WebGL入門LT大会資料
WebGL入門LT大会資料WebGL入門LT大会資料
WebGL入門LT大会資料Kazuya Hiruma
 
計算量 Jyoken
計算量 Jyoken計算量 Jyoken
計算量 Jyokenreew2n
 
SchracVisualizeによる波動関数の可視化
SchracVisualizeによる波動関数の可視化SchracVisualizeによる波動関数の可視化
SchracVisualizeによる波動関数の可視化dc1394
 

What's hot (13)

Lispでやる記号微分
Lispでやる記号微分Lispでやる記号微分
Lispでやる記号微分
 
ドッターのためのプログラミングなにそれおいしいの
ドッターのためのプログラミングなにそれおいしいのドッターのためのプログラミングなにそれおいしいの
ドッターのためのプログラミングなにそれおいしいの
 
ドッターのためのプログラミングなにそれおいしいの
ドッターのためのプログラミングなにそれおいしいのドッターのためのプログラミングなにそれおいしいの
ドッターのためのプログラミングなにそれおいしいの
 
VBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターンVBAで数値計算 03 数式実装パターン
VBAで数値計算 03 数式実装パターン
 
PRML読書会#2,#3資料
PRML読書会#2,#3資料PRML読書会#2,#3資料
PRML読書会#2,#3資料
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxeオブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
オブジェクト指向の皮をかぶった関数型プログラミング言語 Haxe
 
はんなりPython#42 20210629
はんなりPython#42 20210629はんなりPython#42 20210629
はんなりPython#42 20210629
 
F#のコンピュテーション式
F#のコンピュテーション式F#のコンピュテーション式
F#のコンピュテーション式
 
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
魅せる・際立つ・役立つグラフ Hands on!! ggplot2!! ~導入編~
 
WebGL入門LT大会資料
WebGL入門LT大会資料WebGL入門LT大会資料
WebGL入門LT大会資料
 
計算量 Jyoken
計算量 Jyoken計算量 Jyoken
計算量 Jyoken
 
SchracVisualizeによる波動関数の可視化
SchracVisualizeによる波動関数の可視化SchracVisualizeによる波動関数の可視化
SchracVisualizeによる波動関数の可視化
 

Viewers also liked

論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)Lintaro Ina
 
async/await不要論
async/await不要論async/await不要論
async/await不要論bleis tift
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)bleis tift
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJavableis tift
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門bleis tift
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指してbleis tift
 
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!慎一 古賀
 
関数型言語のすすめ
関数型言語のすすめ関数型言語のすすめ
関数型言語のすすめbleis tift
 
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門bleis tift
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)bleis tift
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門Eita Sugimoto
 
型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへ型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへYusuke Matsushita
 
『ポイッとヒーロー』の unity5移行事例
『ポイッとヒーロー』のunity5移行事例『ポイッとヒーロー』のunity5移行事例
『ポイッとヒーロー』の unity5移行事例雄吾 加茂
 
Unityでlinqを使おう
Unityでlinqを使おうUnityでlinqを使おう
Unityでlinqを使おうYuuki Takada
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツShunji Konishi
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメYoji Kanno
 
知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編Shota Baba
 
Unity エディタ拡張
Unity エディタ拡張Unity エディタ拡張
Unity エディタ拡張Shota Baba
 
知って得するUnity
知って得するUnity知って得するUnity
知って得するUnityShota Baba
 

Viewers also liked (20)

論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)論理と計算のしくみ 5.3 型付きλ計算 (前半)
論理と計算のしくみ 5.3 型付きλ計算 (前半)
 
async/await不要論
async/await不要論async/await不要論
async/await不要論
 
VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)VBAを書きたくない話(Excel-DNAの紹介)
VBAを書きたくない話(Excel-DNAの紹介)
 
.NET系開発者から見たJava
.NET系開発者から見たJava.NET系開発者から見たJava
.NET系開発者から見たJava
 
F#によるFunctional Programming入門
F#によるFunctional Programming入門F#によるFunctional Programming入門
F#によるFunctional Programming入門
 
Better C#の脱却を目指して
Better C#の脱却を目指してBetter C#の脱却を目指して
Better C#の脱却を目指して
 
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
 
関数型言語のすすめ
関数型言語のすすめ関数型言語のすすめ
関数型言語のすすめ
 
C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門C#(VB)プログラマのためのF#入門
C#(VB)プログラマのためのF#入門
 
F#の基礎(?)
F#の基礎(?)F#の基礎(?)
F#の基礎(?)
 
ラムダ計算入門
ラムダ計算入門ラムダ計算入門
ラムダ計算入門
 
型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへ型理論 なんて自分には関係ないと思っているあなたへ
型理論 なんて自分には関係ないと思っているあなたへ
 
『ポイッとヒーロー』の unity5移行事例
『ポイッとヒーロー』のunity5移行事例『ポイッとヒーロー』のunity5移行事例
『ポイッとヒーロー』の unity5移行事例
 
Unityでlinqを使おう
Unityでlinqを使おうUnityでlinqを使おう
Unityでlinqを使おう
 
良質なコードを高速に書くコツ
良質なコードを高速に書くコツ良質なコードを高速に書くコツ
良質なコードを高速に書くコツ
 
Extending the Unity Editor
Extending the Unity EditorExtending the Unity Editor
Extending the Unity Editor
 
オブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメオブジェクト指向エクササイズのススメ
オブジェクト指向エクササイズのススメ
 
知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編知って得するC# LINQ to Objects編
知って得するC# LINQ to Objects編
 
Unity エディタ拡張
Unity エディタ拡張Unity エディタ拡張
Unity エディタ拡張
 
知って得するUnity
知って得するUnity知って得するUnity
知って得するUnity
 

More from bleis tift

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。bleis tift
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documentsbleis tift
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compilerbleis tift
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話bleis tift
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前にbleis tift
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴るbleis tift
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~bleis tift
 
F#事例発表
F#事例発表F#事例発表
F#事例発表bleis tift
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)bleis tift
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話bleis tift
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話bleis tift
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座bleis tift
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScriptbleis tift
 
F#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリF#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリbleis tift
 
ぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLLぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLLbleis tift
 
SCMBC闇LT資料
SCMBC闇LT資料SCMBC闇LT資料
SCMBC闇LT資料bleis tift
 
SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料bleis tift
 
輪るビングドラム.NET
輪るビングドラム.NET輪るビングドラム.NET
輪るビングドラム.NETbleis tift
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#bleis tift
 

More from bleis tift (20)

PCさえあればいい。
PCさえあればいい。PCさえあればいい。
PCさえあればいい。
 
No more Legacy documents
No more Legacy documentsNo more Legacy documents
No more Legacy documents
 
解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler解説?FSharp.Quotations.Compiler
解説?FSharp.Quotations.Compiler
 
効果の低いテストの話
効果の低いテストの話効果の低いテストの話
効果の低いテストの話
 
テストの自動化を考える前に
テストの自動化を考える前にテストの自動化を考える前に
テストの自動化を考える前に
 
札束でExcelを殴る
札束でExcelを殴る札束でExcelを殴る
札束でExcelを殴る
 
SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~SI屋のためのF# ~DSL編~
SI屋のためのF# ~DSL編~
 
F#事例発表
F#事例発表F#事例発表
F#事例発表
 
yield and return (poor English ver)
yield and return (poor English ver)yield and return (poor English ver)
yield and return (poor English ver)
 
yieldとreturnの話
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
 
現実(えくせる)と戦う話
現実(えくせる)と戦う話現実(えくせる)と戦う話
現実(えくせる)と戦う話
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
 
JSX / Haxe / TypeScript
JSX / Haxe / TypeScriptJSX / Haxe / TypeScript
JSX / Haxe / TypeScript
 
自分戦略
自分戦略自分戦略
自分戦略
 
F#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリF#で始めるスマートフォンアプリ
F#で始めるスマートフォンアプリ
 
ぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLLぼくのかんがえたさいきょうのLL
ぼくのかんがえたさいきょうのLL
 
SCMBC闇LT資料
SCMBC闇LT資料SCMBC闇LT資料
SCMBC闇LT資料
 
SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料SCMBC Git入門セッション発表資料
SCMBC Git入門セッション発表資料
 
輪るビングドラム.NET
輪るビングドラム.NET輪るビングドラム.NET
輪るビングドラム.NET
 
仕事で使うF#
仕事で使うF#仕事で使うF#
仕事で使うF#
 

ラムダでウィザード 滅せよ手続き、とチャーチは言った (※言ってません)