因果を疑い、副作用を刻み、すべての責任を型で逃がさない。
臭気安全性は型安全性を上回りました。
石器時代の関数型言語 — v0.7 prototype / patched demo
公理 I・III はv0.7において哲学ゴリラにより崩壊済み。詳細は § 3 参照。
immutableより古い。石値 部族名 = "ウホ族" 疑値 焼き芋 = 原因? 結果? おいしい? 臭値 空気 = 💨 値 バナナ = 3 // 忘却閾値に等しい
x = 焼き芋を食べる()
臭気<T>すべての副作用は臭気モナドで包まれ、| 演算子でチェーン(パイプライン)する。例外は throw されない。漂ってくる。
@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 |
哲学ゴリラが自分のおならを哲学した場合にのみ発生する、宇宙最凶の例外。これは例外ではなく公理の崩壊である。
型 越境臭気<発生源, 到達部族, 濃度> で部族間の臭気問題を追跡する。DungLang分散システム型。
| 発生源 | 到達部族 | 条約値(上限) | 超過時 |
|---|---|---|---|
| ウホ族 | バナナ族 | 3 | バナナ賠償(濃度×2本) |
| ウホ族 | マンモス部族 | 5 | バナナ賠償(濃度×2本) |
| バナナ族 | マンモス部族 | 4 | バナナ賠償(濃度×2本) |
| 哲学ゴリラ連邦 | *(全部族) | 0 | 問答無用・即時外交問題 |
dict.get(("哲学ゴリラ連邦","*"), ...) が常に 0 を返していた。フォールバック順が逆。部族間条約[(発生源, 到達部族)] を直接参照するよう修正。未定義はデフォルト4。関数 外交判定(越境臭気) -> 判決 { if "哲学ゴリラ" in 発生源: return 外交問題() // 問答無用(名前で先に弾く) 条約値 = 部族間条約.get((発生源, 到達部族), 4) if 濃度 > 条約値: return 外交問題() // バナナ賠償 = 濃度×2本 else: return 気象ゴリラのせい() // 「自然現象ウホ」 }
バナナ3本以上の受領で過去の臭気事件を完全忘却する。忘却とは消去ではなく歴史からの除去である。
関数 バナナを受け取る(n: Int) -> 記憶 { if n >= 忘却閾値(3): 記憶バッファ.clear() return "忘却済み" else: return "記憶保持中(まだ覚えてるウホ😠)" }
DungLang最強の例外処理システム。型安全性より臭気安全性を優先する設計思想の究極形態。
try: 臭気事件 catch: バナナ三本 result: なかったことになる
| バナナ数 | 結果 | 信頼度 |
|---|---|---|
| 0〜2 | 転嫁先に責任確定 | ランダム(12〜87%) |
| 3以上 | 事案消滅(揉み消し) | 100%(確実) |
dict.get(key, default) の default は key が存在しないときのみ使われる。
("哲学ゴリラ連邦", "*") は辞書に登録されているため常にヒットし、値 0 が返り続けた。
結果、全ケースで濃度 > 0 が成立し、外交問題と判定されていた。
条約値 = 部族間条約.get(
("哲学ゴリラ連邦", "*"), # ← 常にキーが存在するのでここで終わる
部族間条約.get((self.発生源, self.到達部族), 4) # ← 永遠に到達しない
)
# → 常に 0 が返り、ケースBも外交問題になっていた
if "哲学ゴリラ" in self.発生源:
return 外交問題(self) # 哲学ゴリラは名前で先に弾く
条約値 = 部族間条約.get((self.発生源, self.到達部族), 4)
if self.濃度 > 条約値:
return 外交問題(self)
else:
return 気象ゴリラのせい(self)
観測中 モード中に 副作用 トークンが来ると
elif モード == "観測中": の分岐に先に入り、
現象["副作用"] = "💨💨" と生文字列で保存されていた。
💨 の数を数える処理には到達しなかった。
elif モード == "観測中":
現象[t.種別] = t.値 # 副作用もここで保存 → レベル計算されない
elif t.種別 == "副作用":
現象["副作用レベル"] = t.値.count("💨") # ← 到達しない
elif t.種別 == "副作用":
現象["副作用レベル"] = t.値.count("💨") # モードに関係なく先に処理
elif モード == "観測中":
現象[t.種別] = t.値
ケースA(濃度7 > 条約値3)→ 外交問題、ケースB(濃度2 ≤ 条約値3)→ 気象ゴリラのせい。fix #001 により正しく動作するようになった。
| ケース | 発生源 | 濃度 | 条約値 | 期待 | original | patched |
|---|---|---|---|---|---|---|
| A | ウホ族→バナナ族 | 7 | 3 | 外交問題 | ✅ 外交問題 | ✅ 外交問題 |
| B | ウホ族→バナナ族 | 2 | 3 | 気象ゴリラのせい | ❌ 外交問題(バグ) | ✅ 気象ゴリラのせい |
| パターン | 条件 | 判決 |
|---|---|---|
| 💨(無音, 無臭) | 検出なし | "風" |
| 💨(有音, 微臭) | 曖昧な事例 | "疑い" |
| 💩(有音, 強臭) | 証拠あり | "事件" |
| 🍠(満腹, 数分後) | 因果関係明確 | "自然法則" |
| _ | 不明 | "哲学ゴリラに送る" |