Zero ドキュメント
簡潔で実例中心の Zero リファレンス。概念を読み、コードを見て、Coddy のジャーニーで実践しましょう。
はじめに
- ZeroとはZeroは、人間だけでなくAIエージェントを「第一級のユーザー」として想定して設計された、Vercel Labsによる実験的なシステムプログラミング言語です。その正体と存在理由を解説します。
- Zero をインストールZero コンパイラーとツールチェーンを 1 行の curl コマンドでインストールする方法。PATH の設定と `zero --version` での動作確認まで丁寧に解説します。
- Hello, WorldZero での最初のプログラム。定番の hello-world のすべての要素の意味、`zero run` での実行方法、そしてたった 5 行でも `World`・`raises`・`check` が顔を出す理由を解説します。
- Zero CLIコマンドラインツール `zero` のツアー。日常的に使うサブコマンド、それぞれの出力、そして `--json` フラグで全コマンドをエージェント向けの機械可読フィードに変える方法を紹介します。
- Zero パッケージZero パッケージのレイアウト解説。`zero.json` マニフェスト、`src/` ディレクトリ、そして同じソースツリーから実行ファイル・ライブラリ・テストを生成するターゲットシステムを紹介します。
言語の基本
- let バインディングZero での `let` の使い方を解説。ローカルバインディングの宣言、型推論と明示的な型注釈、そして複数キーワードではなく単一の束縛形式を選ぶ理由まで紹介します。
- プリミティブ型Zero が標準で提供するビルトイン型。あらゆる幅の符号付き・符号なし整数、浮動小数点、ブーリアン、文字、文字列、そして空の型 Void を解説します。
- 関数Zero の関数の仕組みを解説。`fun` キーワード、型付きパラメータ、戻り値の型、`pub` の可視性修飾子、そして関数シグネチャにおける `raises` の役割を紹介します。
- If/ElseZero での `if` と `else` の使い方。ブーリアン条件、各分岐の本体、真偽値強制がない理由、そして `match` とどう使い分けるかを解説します。
- while ループ現在の Zero における `while` ループの仕組み。条件、ループ本体、初期段階の言語に `for` と `do-while` がない理由、ループと明示的なエフェクトの関係を解説します。
データモデリング
- shape(構造体)shape は Zero の構造体ライクな直積型です。宣言の仕方、値の構築、フィールドの読み取り、関数を介した受け渡しを公式サンプル付きで解説します。
- ジェネリクスZero でのジェネリクスの仕組み。関数と shape での型パラメータの宣言、ジェネリック関数の呼び出し、長いパラメータ化を綺麗な名前に変える型エイリアスのパターンを解説します。
- enumZero での `enum` の使い方。固定された名前付きバリアントの宣言、値の比較、そして `enum`(プレーンなタグ)と `choice`(タグ付き共用体)の境界を解説します。
- Choice と MatchZero の `choice` がタグ付き共用体をどう宣言するか、`match` がそのバリアントで網羅的に分岐する方法——Zero 版の直和型とパターンマッチを解説します。