Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Lean言語は新世代の純粋関数型言語になれるか?
Search
井上亜星
June 15, 2025
Programming
130
1
Share
Lean言語は新世代の純粋関数型言語になれるか?
関数型まつり2025で発表したスライドです。
井上亜星
June 15, 2025
More Decks by 井上亜星
See All by 井上亜星
Lean プロジェクトの依存関係を 自動更新する
inoueasei
1
52
Leanで本を執筆する
inoueasei
0
95
Other Decks in Programming
See All in Programming
PHPで使える日時の表現と、その知り方 #frontend_phpcon_do
o0h
PRO
0
140
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
100
ビジネスモデルから紐解く、AI+型駆動開発
hirokiomote
2
4.7k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
210
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
420
開発体験を左右するライブラリの API 設計 - GraphQL スキーマ構築ライブラリから考える #tskaigi
izumin5210
2
1.4k
iOS26時代の新規アプリ開発
yuukiw00w
0
220
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
400
CSC307 Lecture 17
javiergs
PRO
0
290
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.8k
Stage 3 Decorators でできること / できないこと / TSKaigi 2026
susisu
1
1.4k
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
320
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
180
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
130
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
540
Unsuck your backbone
ammeep
672
58k
Embracing the Ebb and Flow
colly
88
5.1k
ラッコキーワード サービス紹介資料
rakko
1
3.5M
Agile that works and the tools we love
rasmusluckow
331
21k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
370
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Practical Orchestrator
shlominoach
191
11k
Are puppies a ranking factor?
jonoalderson
1
3.4k
Transcript
Lean言語は 新世代の純粋関数型言語になれるか? Proxima Technology 井上亜星
Lean 言語ってなに? 2013年ごろに当時 Microsoft Research に在籍し ていた Leonardo de Moura
氏により開発が始め られた定理証明支援系。 Rocq(旧Coq) や Agda と同様に、依存型という 強力な型システムのパワーによって命題を表現 し、証明することを可能にしている。 現在、Lean 4 がアクティブに開発中。
他の定理証明支援系とどう違うの? 大きく分けて2つの特徴があります 1.依存型に基づく定理証明支援系であると同時に、 純粋関数型言語でもある (プログラミングと証明を両立するための工夫もある) 2.強力なメタプログラミングフレームワークを備えている
純粋?Haskell みたいな言語ってこと? 確かに Haskell にかなり影響を受けている (モナドや do 構文もある) しかし、Haskell にはなかったおもしろい機能がある:
・notebook なしでもフィードバックが即座に得られる ・do 構文が強力で、for ループや while ループも書ける ・フィールド記法があって、関数適用をフィールドアクセスのように書ける ・効率的に計算ができるようにする Functional but in-place という仕様がある
フィードバックが即座に得られる エディタ上で編集するごとに実行結果を確認できる 画像では Error Lens 拡張機能を使用しています
強力な do 構文 ・for ループと while ループ ・let mut で可変なローカル変数
・continue と break 詳細は ‘do’ unchained という論文を参照
フィールド記法 T が e の型であるときに、関数適用 T.f e を e.f と書くことができる
Functional but in-place 他で参照されていない値を更新するとき、自動で破壊的な更新が行われる (参照カウントに基づく)
他の定理証明支援系とどう違うの? 大きく分けて2つの特徴があります 1.定理証明支援系であると同時に、純粋関数型言語でもある (プログラミングと証明を両立するための工夫もある) 2.強力なメタプログラミングフレームワークを備えている
プログラミングと証明を両立するために 実装と論理モデルを分離することができる ・自然数 Nat は、論理モデルはペアノの公理で与えられているが、 実際の計算は別の高速な方法で行われる ・文字列 String は Char
のリストとして定義されているが、 実際の計算は別の高速な方法で行われる などなど…。 正当性の証明付きで置換することもできるし、証明なしで置換することもできる
他の定理証明支援系とどう違うの? 大きく分けて2つの特徴があります 1.定理証明支援系であると同時に、純粋関数型言語でもある (プログラミングと証明を両立するための工夫もある) 2.強力なメタプログラミングフレームワークを備えている
強力なメタプログラミングフレームワークとは? syntax コマンドと declare_syntax_cat コマンドでパーサを書き換えて新しい構文を定義す ることができるほか、macro_rules コマンドでマクロも自由に書ける
実際にプログラムを書けるのか? 実際に Lean で書かれた(広く使われている)プログラムの例として、 ドキュメント生成ツール doc-gen4 や文書作成ツール verso がある。 実際、Lean
の公式マニュアルは verso を使って書かれている。
まとめ Lean 言語というプログラミング言語があって、 • Rocq (旧 Coq) のように定理証明支援系として使える • Haskell
のように純粋関数型言語としても使える 後発言語らしい工夫もあり • 定理証明とプログラミングを両立する工夫 • 純粋関数型言語のパフォーマンス面・UI面双方の欠点を改善
自己紹介 名前:井上亜星 所属:Proxima Technology GitHub 等ネットでは 北窓(きたまど) という名前でやってます
自己紹介 n 月刊ラムダノートに記事を寄稿したほか、 Lean by Example というオンラインリファレンスを書いてます
おわりに lean-ja という Lean の日本語コミュニティ (Discordサーバ)もあります。 ご興味があればぜひ。
ご清聴ありがとうございました