Add unknown ranges and open object values

This commit is contained in:
2026-08-14 08:00:22 +09:00
parent 8c50dd202d
commit 848c7f169f
53 changed files with 9047 additions and 6572 deletions
@@ -82,12 +82,27 @@ Int & >= 10 & <= 10 # OK
最小の組み込み制約は以下である。
```dcdl
Unknown
String
Int
Float
Bool
```
`Unknown` はすべてのDecodal値を含む最上位rangeである。検査を無効化する `Any` ではなく、具体的な値またはより狭いrangeがまだ決まっていないことを表す。
```dcdl
Int & Unknown # Int
42 as Unknown # 42
Unknown as Int # エラー
```
`Unknown` 自体は具体値を持たないためmaterializeできない。defaultを与えるか、具体値で絞り込む必要がある。
```dcdl
Unknown default {} # {}
```
追加の述語制約はライブラリまたは組み込みとして提供できる。
```dcdl
@@ -150,7 +165,16 @@ Services = {...{
```
key は schema で列挙せず、空 object も許容する。
固定 object field と任意 key の value constraint を混在させる構文は現在サポートしない
固定 object field と任意 key の value constraint は、末尾の `...T` で混在できる
```dcdl
{
enabled = Bool default true;
...Unknown
}
```
このrest constraintは明示されていないfieldだけに適用され、field自体は生成しない。
## default