型推論付き言語
の実装
@__int
型推論とは
•型再構築とも
•ex. 型なし項の型を推論する
例
True
True : Bool
例
λx. λy. x
(λ(x: τ1). λ(y: τ2). (x: τ1)) : (τ1→ τ2→τ1)
型推論の流れ
型なし項
型付き項
型付け
方程式
型制約
単一化
型付き項
方程式の生成
型なし項
型付き項
型付け
方程式
型制約
単一化
型付き項
必要な関数
C(Γ, t) = (c, T)
必要な関数
C(Γ, t) = (c, T)
型環境
必要な関数
C(Γ, t) = (c, T)
型なし項型環境
必要な関数
C(Γ, t) = (c, T)
型なし項型環境 制約
必要な関数
C(Γ, t) = (c, T)
型なし項型環境 制約 型付き項
単一化
型なし項
型付き項
型付け
方程式
型制約
単一化
型付き項
必要な関数
U(c) = (S)
必要な関数
U(c) = (S)
制約
必要な関数
U(c) = (S)
制約 型変数の対応
実行までの流れ
型付き項
型なし項
評価
型付き項
型なし項
実行結果
評価の流れ
型付き項
型付き de Bruijn項
結果
de Bruijn index化
eval
評価の流れ
型付き項
型付き de Bruijn項
結果
de Bruijn index化
eval
de Bruijn index
λx. λy. x
λ. λ. 1
de Bruijn index
λx. λy. x
λ. λ. 1
de Bruijn index
λx. x (λy. x) (λz. x)
λ. 0 (λ. 1) (λ. 1)
評価の流れ
型付き項
型付き de Bruijn項
結果
de Bruijn index化
eval
β-簡約
•(λ.t) v →β [0 ↦ v] t
•(実際はシフトなどが必要)
実装
•型: 関数 + Bool
•値: λ項 + 真偽値, if 文
実装
•自然数
•帰納的関数
•その他拡張
実装
•自然数
•帰納的関数
•その他拡張
まとめ
•型システムたのしい
•Haskell かわいい
ご清聴ありがとうございました
Upcoming SlideShare
Loading in …5
×

型推論

1,142 views

Published on

JOIss 2013 での発表

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,142
On SlideShare
0
From Embeds
0
Number of Embeds
74
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

型推論

  1. 1. 型推論付き言語 の実装 @__int
  2. 2. 型推論とは •型再構築とも •ex. 型なし項の型を推論する
  3. 3. 例 True True : Bool
  4. 4. 例 λx. λy. x (λ(x: τ1). λ(y: τ2). (x: τ1)) : (τ1→ τ2→τ1)
  5. 5. 型推論の流れ 型なし項 型付き項 型付け 方程式 型制約 単一化 型付き項
  6. 6. 方程式の生成 型なし項 型付き項 型付け 方程式 型制約 単一化 型付き項
  7. 7. 必要な関数 C(Γ, t) = (c, T)
  8. 8. 必要な関数 C(Γ, t) = (c, T) 型環境
  9. 9. 必要な関数 C(Γ, t) = (c, T) 型なし項型環境
  10. 10. 必要な関数 C(Γ, t) = (c, T) 型なし項型環境 制約
  11. 11. 必要な関数 C(Γ, t) = (c, T) 型なし項型環境 制約 型付き項
  12. 12. 単一化 型なし項 型付き項 型付け 方程式 型制約 単一化 型付き項
  13. 13. 必要な関数 U(c) = (S)
  14. 14. 必要な関数 U(c) = (S) 制約
  15. 15. 必要な関数 U(c) = (S) 制約 型変数の対応
  16. 16. 実行までの流れ 型付き項 型なし項
  17. 17. 評価 型付き項 型なし項 実行結果
  18. 18. 評価の流れ 型付き項 型付き de Bruijn項 結果 de Bruijn index化 eval
  19. 19. 評価の流れ 型付き項 型付き de Bruijn項 結果 de Bruijn index化 eval
  20. 20. de Bruijn index λx. λy. x λ. λ. 1
  21. 21. de Bruijn index λx. λy. x λ. λ. 1
  22. 22. de Bruijn index λx. x (λy. x) (λz. x) λ. 0 (λ. 1) (λ. 1)
  23. 23. 評価の流れ 型付き項 型付き de Bruijn項 結果 de Bruijn index化 eval
  24. 24. β-簡約 •(λ.t) v →β [0 ↦ v] t •(実際はシフトなどが必要)
  25. 25. 実装 •型: 関数 + Bool •値: λ項 + 真偽値, if 文
  26. 26. 実装 •自然数 •帰納的関数 •その他拡張
  27. 27. 実装 •自然数 •帰納的関数 •その他拡張
  28. 28. まとめ •型システムたのしい •Haskell かわいい
  29. 29. ご清聴ありがとうございました

×