Document lightweight runtime boundaries

This commit is contained in:
2026-06-19 22:48:33 +09:00
parent 01ad6dca52
commit 8b3df21cfa
2 changed files with 53 additions and 1 deletions
+19
View File
@@ -14,6 +14,10 @@ RuntimeValue =
`Concrete` は明示的な値である。
`Abstract` は、まだ具体値に確定していない制約付きの値である。
Decodal は `unknown``any``null` のような「存在するが意味が未確定な値」を runtime value として持たない。
識別子や field が解決できない場合は、その場で diagnostic になる。
未解決値を後続の演算へ流して推論することはしない。
## ConcreteValue
```text
@@ -88,6 +92,21 @@ port = 8000;
Concrete(Int(8000))
```
## Runtime scope
Decodal runtime は application runtime ではなく、pure value evaluator である。
同じ source、同じ import sources、同じ host globals が与えられた場合、評価結果は決定的である。
runtime が扱う責務は以下に限る。
- expression を評価する。
- thunk を必要に応じて force する。
- concrete / abstract value を合成する。
- materialize 時に constraint を検証する。
runtime は filesystem、network、environment variable、time、random、mutation を扱わない。
core における import は host supplied source を受け取る境界であり、filesystem access ではない。
## Constraint
constraint は concrete value とは別の型として扱う。