
2026/02/21 2:34
リル・ファン・ランズ
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
以下は、各重要ポイントを要約に直接マッピングし、根拠のない推測を除去し、事実ベースのトーンを保った緊密なバージョンです。
要約
このテキストでは、12 の小規模〜中規模言語実装プロジェクトをカタログ化しており、それぞれがコンパクトなコードベースで異なる型システムまたはランタイム機能を示しています:
| # | プロジェクト(重要ポイント) | サイズ(LOC) | コア機能 |
|---|---|---|---|
| 1 | Hirrolot’s CoC – OCaml gist が Calculus of Constructions を双方向型付けと「type‑in‑type」ユニバースで実装 | ~60–80 | 従属型、双方向型付け |
| 2 | Harrop MiniML – Camlp4 と LLVM バインディングを使用した OCaml コンパイラ | ~100 | 整数演算、条件分岐、一階関数 |
| 3 | Algorithm W (Martin Grabmüller) – Hindley–Milner 型推論の literate Haskell 実装 | ~300 | Hindley–Milner 推論 |
| 4 | tomprimozic/type-systems – 複数の推論アルゴリズムを備えた OCaml リポジトリ | 300–600 | HM、行多相性、HMF |
| 5 | lambda‑calculus‑hs – 単一ファイルの Haskell ラムダ計算実装シリーズ | 200–900 | 様々な型システム(HM、NbE、System T) |
| 6 | THIH – 完全な Haskell 98 型システムを実装したコア Haskell プログラム | 429 | 種類、クラス、パターンマッチング、相互再帰 |
| 7 | Simple‑sub – MLsub をアルジェブラ型付きに再実装した Scala | ~500 | ユニオン/交差型 |
| 8 | PLZoo poly – パラメトリック多相性と HM 推論を備えた OCaml 遅延言語 | 400–600 | パラメトリック多相性、HM |
| 9 | EYG – 行型推論とアルジェブラ効果を特徴とする JavaScript インタープリタ(Gleam) | ~500 | 行型、効果ハンドラー、クロージャシリアライゼーション |
| 10 | Pico‑ml – OCaml の TypeScript サブセットで HM 推論を行い WebAssembly にコンパイル | – | ブラウザ向けの ML コンパイレーション |
| 11 | Eff – OCaml 構文で書かれたオリジナルのアルジェブラ効果言語 | – | 効果ハンドラー、ファーストクラス効果ランタイム |
| 12 | MicroHs – C から起動可能な Haskell コンパイラ(15–30 k LOC) | 15–30 k | Haskell 2010 のほぼ全て、型クラス、do-ノーテーション、モジュール;JavaScript を対象 |
これらのプロジェクトは、従属型、行多相性、アルジェブラ効果、あるいは完全な Haskell 98 意味論といった洗練された型理論的アイデアが、控えめなコードベースで実装できることを示しています。主に教育ツールや研究プロトタイプとして機能し、高度な言語機能の実験障壁を下げます。
主要ポイント
- プロジェクトは OCaml、Haskell、Scala、TypeScript、JavaScript など多様な言語で構成され、ネイティブバイナリ、WebAssembly、JavaScript を対象としています。
- 概念を教育や迅速プロトタイピングに適した形でアクセスしやすくするため、意図的に小規模です。
- これらの実装が主流言語に直接影響を与えるという主張はしておらず、単に実現可能性を示しています。
本文
プログラミング言語実装 – コンパクト表
| # | プロジェクト | ソース | LOC | 言語 | 型システム | 実行時 | 備考 |
|---|---|---|---|---|---|---|---|
| 1 | Hirrolot’s CoC | src | ~70 | OCaml | ✅ | ✗ | インタプリタ(構成計算、依存型) |
| 2 | Harrop MiniML | src | ~100 | OCaml | ✗ | ✗ | LLVM → ネイティブ(クロージャ/GCなし) |
| 3 | Algorithm W | src | ~300 | Haskell | ✓ | ✗ | 型チェッカーのみ |
| 4 | tomprimozic/type‑systems | src | ~300 | OCaml | ✓ | ✗ | 行列多型等を含む推論バリエーション |
| 5 | lambda‑calculus‑hs | src | 200–900 | Haskell | ✗ | ✓ | インタプリタ(段階的 λ計算) |
| 6 | THIH | src | ~429 | Haskell | ✓ | ✗ | 型チェッカーのみ(Haskell 98仕様) |
| 7 | Simple‑sub | src | ~500 | Scala | ✓ | ✗ | 代数的部分型(和/積) |
| 8 | PLZoo poly | src | ~400–600 | OCaml | ✓ | ✗ | 遅延・パラメトリックHM |
| 9 | EYG | src | ~500 | Gleam / JS | ✓ | ✓ | 行列型推論+効果;JSON AST |
| 10 | Pico‑ml | src | ~500 | TypeScript | ✓ | ✗ | WebAssemblyターゲット |
| 11 | TinyML | src | <700 | SML | ✓ | ✗ | インタプリタ(HM + 字句解析/構文解析) |
| 12 | Eff | src | ~1–2 K | OCaml | ✓ | ✓ | 代数効果・ハンドラ |
| 13 | Frank | src | ~1–2 K | Haskell | ✓ | ✓ | 効果付き関数型言語 |
| 14 | Grace | src | ~1‑3 K | Haskell | ✓ | ✗ | 行列多型、双方向型付け |
| 15 | Hackett | src | ~1‑3 K | Racket | ✓ | ✗ | マクロで実装された型システム(Haskell風) |
| 16 | Scrapscript | src | ~1‑3 K | Python | ✓ | ✓ | 暗号ハッシュ、C/WASM/Cosmoネイティブ |
| 17 | MinCaml | src | ~2 000 | OCaml | ✗ | ✓ | ネイティブ(SPARC/PPC/x86)、厳格関数型 |
| 18 | Ben Lynn | src | ~2 000 | Haskell / C | ✓ | ✓ | ブートストラップチェーン → WebAssembly |
| 19 | 1ML | src | 3‑5 K | OCaml | ✓ | ✗ | 第一級モジュール、System Fωターゲット |
| 20 | mlml | src | 3‑5 K | OCaml | ✗ | ✓ | 自己ホスティング、型推論なし |
| 21 | Dhall | src | ~4 K | Haskell | ✓ | ✗ | トータル言語、正規化保証 |
| 22 | Ante | src | 5‑10 K | Rust | ✓ | ✓ | Craneliftバックエンド、代数効果 |
| 23 | Tao | src | 5‑10 K | Rust | ✓ | ✓ | バイトコードインタプリタ、トータリティチェック |
| 24 | Austral | src | 5‑10 K | OCaml | ✗ | ✓ | 線形型・権限セキュリティ |
| 25 | AQaml | src | 5‑8 K | OCaml | ✗ | ✓ | 自己ホスティング、型推論なし |
| 26 | Borgo | src | 5‑10 K | Rust | ✓ | ✓ | Goソースへコンパイル(Go風構文) |
| 27 | polytt | src | 5‑10 K | OCaml | ✗ | ✗ | 多項式関数型、依存型 |
| 28 | Newt | src | ~7 K | Newt | ✓ | ✓ | 自己ホスティング、依存型、LSP |
| 29 | HaMLet | src | 10‑15 K | SML | ✓ | ✗ | 完全なSML ’97実装 |
| 30 | SOSML | src | 10‑15 K | TypeScript | ✓ | ✗ | ブラウザベースのSMLコア |
| 31 | MicroHs | src | 15‑30 K | Haskell/C | ✓ | ✓ | ほぼ完全なHaskellコンパイラ、Cからブートストラップ可 |
主なハイライト
- 最小限のインタプリタ/コンパイラ – MinCaml, TinyML, Pico‑ml
- 型システム研究 – Algorithm W, Simple‑sub, EYG, Tao, Dhall
- ブートストラップチェーン – Ben Lynn, MicroHs
- 自己ホスティング言語 – Newt, HaMLet, SOSML
- ドメイン固有DSL – Grace, Scrapscript, Borgo
すべてのプロジェクトはGitHub(または最小規模のものはGist)で公開され、簡潔なREADME/概要ドキュメントが付属しています。言語実装を学習・拡張したい際に、この表をクイックリファレンスとしてご活用ください。