Trim open issues to materialization
This commit is contained in:
@@ -188,11 +188,12 @@ RuntimeValue =
|
||||
|
||||
## default の合成
|
||||
|
||||
同じフィールドに複数の `default` が合成された場合の詳細規則は未確定である。
|
||||
現時点の単純な方針は以下である。
|
||||
`default` の合成規則は以下である。
|
||||
|
||||
- `&` による default 同士の衝突はエラーにする。
|
||||
- 同一 default 値は許可してよい。
|
||||
- `//` による patch では右辺 default が左辺 default を置き換える。
|
||||
- `&` で片方だけが default を持つ場合、その default を保持する。
|
||||
- `&` で両方が異なる default を持つ場合、conflict になる。
|
||||
- `Abstract & Concrete` が成功した場合、結果は concrete value になり default は消える。
|
||||
- `//` では右辺が左辺を置き換える。object/object の場合は field ごとに再帰 patch されるため、右辺 field の default が左辺 field の default を置き換える。
|
||||
|
||||
この方針により、`&` は制約を保った合成、`//` は上書き操作として説明できる。
|
||||
`default` thunk は materialize 時に必要になった時点で評価する。
|
||||
評価された default value は、同じ abstract value に残っている制約を満たす必要がある。
|
||||
|
||||
Reference in New Issue
Block a user