Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Church vs Curry Typing といくつか型の概念の調査

Avatar for Yuki Otsuka Yuki Otsuka
April 26, 2025
97

Church vs Curry Typing といくつか型の概念の調査

OSunC-2025でのLT資料

Avatar for Yuki Otsuka

Yuki Otsuka

April 26, 2025
Tweet

Transcript

  1. アジェンダ • この話をするまでのきっかけ • 型付けスタイルと定義順序の違い • 単純型付きλ計算について • 型付きλ計算の説明を入れた背景 •

    Church vs Curry の対比 • 篩型 (Refinement Types) と依存型 (Dependent Types) • 漸進的型付け (Gradual Typing) • まとめ 3
  2. 単純型付きλ計算入門① 変数・抽象・適用 • 変数: x, y, z などで値を表現 • 抽象:

    λx. M で引数 x に対する関数 M を定義 • 適用: 式 M N は関数 M を引数 N に適用 → 例: (λx. x) 42 は 42 と評価される。 7
  3. 単純型付きλ計算入門② 型付け • simply-typed λ-calculus: 型 A → B を持つ関数を導入

    • 抽象: λx:A. M で x の型を A と明示 • 適用: 式 M N がある際、M の型 A→B と N の型 A をチェックし、結果型 B を得る。 → well-typedプログラムは型安全性*が保証される。 *型の進行性と保存性(Progress & Preservation) 8
  4. 型付け規則 (Typing Rules) 環境 Γ と型付け関係 ⊢ を用いて,次の3つの推論則で型を付ける • (Var)

    Γ ⊢ x : A • ————————————— if (x : A) ∈ Γ • (Abs) Γ, x:A ⊢ M : B • ————————————————————— • Γ ⊢ λx:A. M : A → B • (App) Γ ⊢ M : A → B Γ ⊢ N : A • ————————————————————————————— • Γ ⊢ M N : B 9
  5. Church-style (ドメイン付き) 型付け ・λx:A. M により引数 x の型 (domain) を明示

    – domain は関数の入力型(引数の型)、codomain は出力型(戻り値の型) ・Rocq や Agda, F*のような証明支援系で利用される(依存型, 後述) ・注釈が冗長でも仕様が明確 12
  6. Curry-style (ドメイン無し) 型付け ・λx. M と記述し、文脈 Γ (コンテキスト) から型を推論 –

    Γ は変数とその型の環境 (例: x:A, y:B) を保持 ・MLやHaskellなどの言語がこのスタイルも持つ印象、いわゆる型推論が機能する。 ・コードの簡潔さに寄与する。 13
  7. Church vs Curry スタイルの比較 ・Church: 強い型検証 & 証明可能性 ↑/注釈負担 ↑

    ・Curry: 記述量 ↓ & 文脈による汎用性 ↑/文脈による推論依存 14
  8. 篩型の適用例 ・数値型: {x: Int | x > 0} など正の整数のみ受け入れる ・文字列型:

    {s: String | matches(s, regex)} で入力フォーマットを保証 17
  9. Appendix: 参考文献 ・ピアス, ベンジャミン C. 著; 住井英二郎 監訳・遠藤侑介, 酒井政裕, 今井敬吾,

    黒木裕介, 今井宜洋, 才川隆文, 今井健男 訳.『型システム入門―プログラミング言語と型の理論』. 東京: オーム社, 2013年3月. pp. 75–84 • Jacques Garrigue “Typed λ-Calculus”: https://www.math.nagoya-u.ac.jp/~garrigue/lecture/2023_tenbo_en/typed_en.pdf • Eric Normand “Church vs Curry Types”: https://ericnormand.me/article/church-vs-curry-types 23