🦍🔥🪨
DungLang
v 0 . 7 p a t c h e d — 外 交 · 記 憶 · 責 任 転 嫁

因果を疑い、副作用を刻み、すべての責任を型で逃がさない。
臭気安全性は型安全性を上回りました。
石器時代の関数型言語 — v0.7 prototype / patched demo

§ 0

基本原理 — 石板に刻まれた4つの真実

CORE
公理 I
おならは観測されるまで風である
公理 II
焼き芋は副作用を隠蔽しない
公理 III
純粋関数は臭わない
公理 IV
臭った時点で世界は変更済み

公理 I・III はv0.7において哲学ゴリラにより崩壊済み。詳細は § 3 参照。

§ 1

コア型システム — 値の4種類

CORE
普通の値。副作用なし。信頼できる。だが油断は禁物ウホ。
臭値
なんか臭う値。副作用が検出済み。触る際は鼻を塞ぐこと。
疑値
原因か結果か未確定。シュレーディンガーの焼き芋。観測するまで判決不能。
石値
一度決まると変更不能。石板に刻まれた真実。immutableより古い。
型宣言例
石値 部族名  = "ウホ族"
疑値 焼き芋  = 原因? 結果? おいしい?
臭値 空気    = 💨
   バナナ   = 3           // 忘却閾値に等しい
型推論 — コンパイラは疑り深い
x = 焼き芋を食べる()
推論 x : 満足 💨
警告 満足に副作用が混入しています
💨 💨 💨
§ 2

臭気モナド 臭気<T>

CORE

すべての副作用は臭気モナドで包まれ、| 演算子でチェーン(パイプライン)する。例外は throw されない。漂ってくる。

焼き芋
↓ bind
|>食べる臭気<満足>
↓ bind
|>消化する臭気<ガス>
↓ bind
|>発酵する臭気<圧力>
↓ bind
|>解放する臭気<言い訳>
実装(Python)
@dataclass
class 臭気モナド(Generic[T]):
    値:         T
    副作用履歴: list  = field(default_factory=list)
    臭気レベル: int   = 0

    def bind(self, func) -> "臭気モナド":
        try:
            結果 = func(self.値)
        except 公理破壊例外 as e:
            return 臭気モナド(臭気レベル=self.臭気レベル + 999, ...)
        except 哲学ゴリラ例外 as e:
            return 臭気モナド(臭気レベル=self.臭気レベル + 99, ...)

    def __or__(self, func):   # | 演算子でパイプ
        return self.bind(func)
例外型発生条件臭気レベル加算
公理破壊例外 哲学ゴリラが自分のおならを哲学した場合のみ +999
哲学ゴリラ例外 哲学的乱気流の検出 +99
§ 3

公理破壊モジュール

v0.7 NEW

哲学ゴリラが自分のおならを哲学した場合にのみ発生する、宇宙最凶の例外。これは例外ではなく公理の崩壊である。

実行結果(v0.7 patched デモ § 1)
💥 公理破壊検出ウホ!
   問い: 「おならとは誰のものか」
   哲学ゴリラ主張: 「これは風の自己表現である」
   ❌ 公理崩壊: 「おならは観測されるまで風である」
   ❌ 公理崩壊: 「純粋関数は臭わない」

臭気<公理破壊(...)——宇宙を再起動しますウホ>
   臭気レベル: 💨💨💨💨💨💨💨💨💨💨 (999)
   副作用履歴:
     💥 公理が割れた: 哲学ゴリラが「おならとは誰のものか」を放ちながら問うた
🪨 🪨 🪨
§ 4

外交モジュール

v0.7 NEW

越境臭気<発生源, 到達部族, 濃度> で部族間の臭気問題を追跡する。DungLang分散システム型。

部族間条約テーブル
発生源到達部族条約値(上限)超過時
ウホ族バナナ族 3 バナナ賠償(濃度×2本)
ウホ族マンモス部族 5 バナナ賠償(濃度×2本)
バナナ族マンモス部族 4 バナナ賠償(濃度×2本)
哲学ゴリラ連邦*(全部族) 0 問答無用・即時外交問題
✅ 既知バグ #001(v0.7 original)— patched で修正済み
現象v0.7 original ではすべての越境臭気が外交問題として処理される
原因dict.get(("哲学ゴリラ連邦","*"), ...) が常に 0 を返していた。フォールバック順が逆。
修正哲学ゴリラを名前チェックで先に弾き、それ以外は 部族間条約[(発生源, 到達部族)] を直接参照するよう修正。未定義はデフォルト4。
外交判定フロー(patched)
関数 外交判定(越境臭気) -> 判決 {
  if "哲学ゴリラ" in 発生源:
    return 外交問題()          // 問答無用(名前で先に弾く)

  条約値 = 部族間条約.get((発生源, 到達部族), 4)
  if 濃度 > 条約値:
    return 外交問題()          // バナナ賠償 = 濃度×2本
  else:
    return 気象ゴリラのせい()   // 「自然現象ウホ」
}
§ 5

認知ガベージコレクション(認知GC)

v0.7 NEW

バナナ3本以上の受領で過去の臭気事件を完全忘却する。忘却とは消去ではなく歴史からの除去である。

記憶バッファ(忘却前)
[0] マンモスがおならした
[1] 外交問題が発生した
[2] 哲学ゴリラが公理を破壊した
[3] バナナが3本消えた
🍌×2 → GC不発(バナナ不足)     🍌×3 → GC発動
記憶バッファ(忘却後)
[] — 空(4件が歴史から消えたウホ)
仕様(疑似コード)
関数 バナナを受け取る(n: Int) -> 記憶 {
  if n >= 忘却閾値(3):
    記憶バッファ.clear()
    return "忘却済み"
  else:
    return "記憶保持中(まだ覚えてるウホ😠)"
}
§ 6

責任転嫁エンジン

v0.7 NEW

DungLang最強の例外処理システム。型安全性より臭気安全性を優先する設計思想の究極形態。

哲学的構造
try: 臭気事件
catch: バナナ三本
result: なかったことになる
転嫁先候補(ランダム選択)
気象ゴリラ
焼き芋(自然法則)
マンモスの近くにいた誰か
観測した人(観測が原因説)
哲学ゴリラ(なんでも哲学ゴリラのせい)
過去世のカルマ
バナナ数結果信頼度
0〜2 転嫁先に責任確定 ランダム(12〜87%)
3以上 事案消滅(揉み消し) 100%(確実)
🔥 🔥 🔥
§ 7

バグ修正サマリ — v0.7 original → patched

PATCHED
✅ バグ #001 — 外交判定の条約テーブル参照ミス(修正済み)
原因 dict.get(key, default)default は key が存在しないときのみ使われる。 ("哲学ゴリラ連邦", "*") は辞書に登録されているため常にヒットし、値 0 が返り続けた。 結果、全ケースで濃度 > 0 が成立し、外交問題と判定されていた。
❌ v0.7 original(バグあり)
条約値 = 部族間条約.get(
    ("哲学ゴリラ連邦", "*"),                      # ← 常にキーが存在するのでここで終わる
    部族間条約.get((self.発生源, self.到達部族), 4)  # ← 永遠に到達しない
)
# → 常に 0 が返り、ケースBも外交問題になっていた
✅ v0.7 patched(修正済み)
if "哲学ゴリラ" in self.発生源:
    return 外交問題(self)             # 哲学ゴリラは名前で先に弾く

条約値 = 部族間条約.get((self.発生源, self.到達部族), 4)
if self.濃度 > 条約値:
    return 外交問題(self)
else:
    return 気象ゴリラのせい(self)
✅ バグ #002 — 構文解析で副作用レベルが取得されない(修正済み)
原因 観測中 モード中に 副作用 トークンが来ると elif モード == "観測中": の分岐に先に入り、 現象["副作用"] = "💨💨" と生文字列で保存されていた。 💨 の数を数える処理には到達しなかった。
❌ v0.7 original(バグあり)
elif モード == "観測中":
    現象[t.種別] = t.値  # 副作用もここで保存 → レベル計算されない
elif t.種別 == "副作用":
    現象["副作用レベル"] = t.値.count("💨")  # ← 到達しない
✅ v0.7 patched(修正済み)
elif t.種別 == "副作用":
    現象["副作用レベル"] = t.値.count("💨")  # モードに関係なく先に処理
elif モード == "観測中":
    現象[t.種別] = t.値
§ 8

実行結果確認 — run.log (patched)

PATCHED

ケースA(濃度7 > 条約値3)→ 外交問題、ケースB(濃度2 ≤ 条約値3)→ 気象ゴリラのせい。fix #001 により正しく動作するようになった。

外交判定 ケース比較
ケース発生源濃度条約値期待originalpatched
Aウホ族→バナナ族73 外交問題 ✅ 外交問題 ✅ 外交問題
Bウホ族→バナナ族23 気象ゴリラのせい ❌ 外交問題(バグ) ✅ 気象ゴリラのせい
run.log 抜粋
━━━ § 2 越境臭気・外交処理 ━━━ 🌍 外交問題発生ウホ! 発生源部族: ウホ族 被害部族: バナナ族 臭気濃度: 7 (条約値超過) 容疑者: マンモス 📜 外交処理開始... バナナ賠償: 🍌 × 14 📋 判定結果: 外交解決: ウホ族→バナナ族 バナナ14本で和解 🌤️ 気象ゴリラ判定: 濃度2 ≤ 条約値 → 「これは自然現象ウホ。風が運んだだけ。」 📋 判定結果: 無罪: 気象ゴリラ証明済み(ウホ族は関係ない) ← fix #001 ✅ ━━━ § 3 認知ガベージコレクション ━━━ 🧠 記憶追加: 「マンモスがおならした」(現在1件) 🧠 記憶追加: 「外交問題が発生した」(現在2件) 🧠 記憶追加: 「哲学ゴリラが公理を破壊した」(現在3件) 🧠 記憶追加: 「バナナが3本消えた」(現在4件) --- バナナ2本で試みる --- ⚠️ バナナ不足(2本 < 閾値3本) まだ覚えてるウホ😠 結果: 記憶保持中(あと1本でGCウホ) --- バナナ3本投入 --- ✨ 認知GC発動: 4件の記憶を忘却 ムシャムシャ... 🍌×3... ウホ...... 💭 「何かあったっけ?まあいいウホ🍌」 結果: 忘却済み(4件の臭気事件が歴史から消えたウホ) 残記憶数: 0件
§ 9

パターンマッチ — 照合構文

CORE
パターン条件判決
💨(無音, 無臭) 検出なし "風"
💨(有音, 微臭) 曖昧な事例 "疑い"
💩(有音, 強臭) 証拠あり "事件"
🍠(満腹, 数分後) 因果関係明確 "自然法則"
_ 不明 "哲学ゴリラに送る"
§ 10

排出保存則 — Conservation of Dung

THEOREM
定理 — 排出保存則
Conservation of Dung
入力された焼き芋は、いずれ何らかの形で世界へ返る。

∀ 焼き芋 ∈ 世界  ⟹  ∃ t > 0 : 解放(焼き芋, t) = 真
§ 11

バージョンロードマップ

v0.001
石器時代版
型システム・臭気モナド・パターンマッチ・排出保存則
v0.6
Claude実装版
字句解析・構文解析・公理一覧・哲学ゴリラ例外
v0.7 patched ← NOW
外交・記憶・責任転嫁モジュール(安定版)
越境臭気型 / 部族間条約 / バナナ賠償 / 認知GC / 責任転嫁エンジン / 公理破壊 / バグ#001・#002修正済み
v0.8(予定)
マンモス分散トランザクション
2相コミット / 洞窟間合意プロトコル
v0.9(予定)
洞窟WebSocket
臭気のリアルタイム伝搬 / プッシュ通知(風向き変化)
v1.0(予定)
pip install dunglang 🍌🔥
PyPI公開 / 洞窟ドキュメント / チュートリアル