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

Lean言語は新世代の純粋関数型言語になれるか?

 Lean言語は新世代の純粋関数型言語になれるか?

関数型まつり2025で発表したスライドです。

Avatar for 井上亜星

井上亜星

June 15, 2025
Tweet

More Decks by 井上亜星

Other Decks in Programming

Transcript

  1. Lean 言語ってなに? 2013年ごろに当時 Microsoft Research に在籍し ていた Leonardo de Moura

    氏により開発が始め られた定理証明支援系。 Rocq(旧Coq) や Agda と同様に、依存型という 強力な型システムのパワーによって命題を表現 し、証明することを可能にしている。 現在、Lean 4 がアクティブに開発中。
  2. 純粋?Haskell みたいな言語ってこと? 確かに Haskell にかなり影響を受けている (モナドや do 構文もある) しかし、Haskell にはなかったおもしろい機能がある:

    ・notebook なしでもフィードバックが即座に得られる ・do 構文が強力で、for ループや while ループも書ける ・フィールド記法があって、関数適用をフィールドアクセスのように書ける ・効率的に計算ができるようにする Functional but in-place という仕様がある
  3. 強力な do 構文 ・for ループと while ループ ・let mut で可変なローカル変数

    ・continue と break 詳細は ‘do’ unchained という論文を参照
  4. プログラミングと証明を両立するために 実装と論理モデルを分離することができる ・自然数 Nat は、論理モデルはペアノの公理で与えられているが、  実際の計算は別の高速な方法で行われる ・文字列 String は Char

    のリストとして定義されているが、  実際の計算は別の高速な方法で行われる などなど…。 正当性の証明付きで置換することもできるし、証明なしで置換することもできる
  5. まとめ Lean 言語というプログラミング言語があって、 • Rocq (旧 Coq) のように定理証明支援系として使える • Haskell

    のように純粋関数型言語としても使える 後発言語らしい工夫もあり • 定理証明とプログラミングを両立する工夫 • 純粋関数型言語のパフォーマンス面・UI面双方の欠点を改善