24 lines
1.5 KiB
Markdown
24 lines
1.5 KiB
Markdown
# 未確定事項
|
|
|
|
今後決める必要がある事項を管理する。
|
|
実装または仕様方針が固まった項目は、該当する仕様ファイルへ反映してここから外す。
|
|
|
|
## Materialize target and host projection
|
|
|
|
Decodal の評価結果は、制約・default・関数値を含む中間値になり得る。
|
|
そのため、Decodal 単独で常に「最終成果物」を一意に決めるのではなく、host 側が期待する型や出力形式を与えて materialize / decode する経路を明確にする必要がある。
|
|
|
|
決めること:
|
|
|
|
- Rust API で評価結果の field/path を選択して decode / materialize できるようにするか。
|
|
- `decodal-derive` の struct schema と評価結果を合成して decode する経路を、主要な materialize path として位置づけるか。
|
|
- CLI / WASM では target path を指定して JSON-compatible value へ materialize する形にするか。
|
|
- 制約や関数値が残った値を出力したい場合、materialize ではなく inspect/debug API として分けるか。
|
|
|
|
現時点の案:
|
|
|
|
- Rust では `evaluate -> select field/path -> expected schema と合成 -> decode` を主経路にする。
|
|
- CLI / WASM では、明示された target path または module 全体を JSON-compatible value として materialize する。
|
|
- materialize できない unresolved abstract value、default のない制約値、関数値は diagnostic にする。
|
|
- Decodal 言語内には materialize 構文を追加せず、host API / CLI / WASM の責務として扱う。
|