Trim open issues to materialization

This commit is contained in:
2026-07-09 02:46:28 +09:00
parent 8e1cb01f52
commit 6d80c66144
18 changed files with 92 additions and 187 deletions
@@ -3,10 +3,7 @@
function call expression は、関数値を引数に適用する式である。
```dcdl
mk_hw({
greet = "Hello";
target = "World";
})
increment(41)
```
## 評価
@@ -14,4 +11,5 @@ mk_hw({
引数は thunk として渡せる。
関数本体内で引数が参照されたときに評価する。
任意の関数呼び出し結果グローバルに memoize することは必須ではない。
関数呼び出し結果そのものはグローバルに memoize ない。
フィールドに束縛された呼び出し結果は、そのフィールド thunk の評価結果として memoize される。
@@ -3,11 +3,7 @@
function expression は、引数を受け取り式を返す値である。
```dcdl
(part: {
greet = String;
target = String;
}) =>
"${part.greet}! ${part.target}"
(value: Int) => value + 1
```
関数仕様の詳細は [関数](../functions.md) に置く。
+3 -5
View File
@@ -4,12 +4,10 @@ let expression は、ローカル束縛を作る。
```dcdl
let
part = {
greet = "Hello";
target = "World";
};
base = 8000;
offset = 80;
in
"${part.greet}! ${part.target}"
base + offset
```
## 評価
@@ -12,4 +12,5 @@ config.feature_hoge.enable
左側の式を object として評価し、指定された field を参照する。
参照先 field は必要になるまで評価されない。
存在しない field への参照をエラーにするか、open schema として扱うかは未確定である。
存在しない field への参照は diagnostic になる。
Decodal は unknown / Any のような値を伝播せず、field の有無を曖昧にしない。
@@ -1,12 +1,8 @@
# String Interpolation Expression
# String Interpolation
string interpolation は、文字列内に式を埋め込む候補機能である
文字列補間は初期実装には含めない
```dcdl
"${part.greet}! ${part.target}"
```
Decodal の string literal は、現時点では literal text として扱う。
式を埋め込む構文は定義しない。
## 評価
補間式の評価タイミングは通常の遅延評価に従う。
文字列補間を初期実装に含めるかは未確定である。
必要になった場合は、文字列連結や明示的な formatting function として別途設計する。