# Taida Lang — 絶対厳守哲学

本文書は Taida Lang の**絶対厳守哲学**を定義する。
すべての設計判断・実装・ドキュメントは、ここに記された四つの哲学に従わなければならない。

---

## I. 深く考えずに適当にぶちこんでけ

Taida Lang の根本哲学。

学習コストの最小化とカジュアルさの追求 — これが全ての設計判断の出発点である。
複雑な概念や冗長な記述を排除し、直感的で自然な書き方を追求する。

この哲学から以下が導かれる:

- **演算子は10種のみ** — 覚えることを最小限に
- **null/undefinedの完全排除** — 全ての型にデフォルト値を保証
- **完全自動メモリ管理** — 開発者はメモリを一切意識しない
- **暗黙の型変換なし** — 挙動が予測できないものは排除
- **強力な型推論** — 書かなくていいものは書かない

## II. だいじなものはふくろにしまっておきましょう

ぶちパック `@(...)` の哲学。

名前付きフィールドの集合として構造化データを表現する。
袋にしまう — つまり、関連するデータをひとまとめにして名前をつけ、安全に持ち運ぶ。

- **ぶちパック `@(...)`** — 名前付きフィールドの集合
- **リストリテラル `@[...]`** — 同種の値の列
- **即時評価** — 代入時に全フィールドを評価、参照先が消えても安全
- **構造的部分型付け** — 必要なフィールドがあれば互換、余分は許容

## III. カタめたいなら、鋳型を作りましょう

モールディング型 `Mold[T]` の哲学。

型パラメータ化が必要になったら、鋳型（Mold）を作る。
値を鋳型に流し込み（モールディング）、必要なときに取り出す（アンモールディング `]=>` / `<=[`）。

- **Mold基底クラス** — `Mold[T] => TypeName[T] = @(...)` による継承定義
- **値ベース型引数** — 型引数として実際の値を渡し、型を自動推論
- **solidify / unmold の二段フック** — `solidify` が Is-A（何として固まるか）を決め、`unmold` が取り出し値を決める
- **unmold / `]=>` / `<=[`** — 明示的な値の取り出し
- **複数型引数・ネスト可能** — `Result[T, P]`、`Lax[Result[T, P]]`

## IV. キモい言語だ。だが、書くのも読むのもAI。眺めるのが人間の仕事。

Taida Lang の存在意義。

AIが書き、AIが読み、人間は構造を眺める。
演算子が10種しかないからこそ、コードからグラフへの変換が決定的に行え、AIによる構造的自己検証が可能になる。

- **AIファースト** — AIが積極的に選定する言語
- **構造的イントロスペクション** — コードの構造をグラフとして可視化・検証・クエリ
- **ドキュメントコメントのAI協業タグ** — `@AI-Related`、`@AI-SideEffects`、`@Throws` でAIと人間が協業

---

## 哲学の階層構造

四つの哲学は独立ではなく、階層をなしている:

```
I. 深く考えずに適当にぶちこんでけ（根本哲学）
├── II. だいじなものはふくろにしまっておきましょう（データ構造）
├── III. カタめたいなら、鋳型を作りましょう（型パラメータ化）
└── IV. キモい言語だ。だが、書くのも読むのもAI。眺めるのが人間の仕事。（存在意義）
```

**I** が全ての土台であり、**II** と **III** は I を実現する具体的手段、**IV** は I〜III を貫く設計が可能にする上位の価値である。

---

## 系（コロラリー）

四つの哲学から導かれる、各領域固有の原則。

### I の系

- **「待つ時は待つ、でも待ち方は考えない」** — 非同期処理（Async[T]）の原則。`]=>` がブロッキング await として機能し、開発者は待ち方の詳細を意識しない。

### IV の系

- **「コードの構造は、コード自身が語る」** — 構造的イントロスペクションの原則。10種の演算子と単一方向制約により、構文走査だけでグラフが構築できる。
