[obsidian] vault backup: 2025-08-13 02:55:43[
All checks were successful
Build / build (push) Successful in 8m9s

This commit is contained in:
2025-08-13 02:55:44 +09:00
parent 3d5ce4da83
commit 65d4bc509d

View File

@@ -13,16 +13,24 @@ date: 2025-07-02 11:40
## 基本構文
構文のベースは [Elm](https://elm-lang.org/docs/records) である。小竹は Rust 風にはしない。
構文のベースは [Elm](https://elm-lang.org/docs/records) である。この部分だけは Rust 風にはしない。
匿名レコード型を正の文脈で使う。
```rust
let myadsr_param = { attack = 100.0, decay = 200.0, sustain:float = 0.6, // let 式同様に型注釈は省略可能だ release = 2000.0, // 末尾のカンマも許可されるべきだ } let singlerecord = { value = 100, // フィールドが1つだけのレコードは、ブロックや代入構文と区別するために末尾カンマが必須だ }
let myadsr_param = {
    attack = 100.0,
    decay = 200.0,
    sustain:float = 0.6, // let 式同様に型注釈は省略可能だ
    release = 2000.0, // 末尾のカンマも許可されるべきだ
}
let singlerecord = {
    value = 100, // フィールドが1つだけのレコードは、ブロックや代入構文と区別するために末尾カンマが必須だ
}
```
後で実装予定だが、型エイリアス/新規型宣言の中でもデフォルト値を設定できる。宣言内のデフォルト値はリテラルである必要がある。
後で実装予定だが、型エイリアス/新規型宣言の中でもデフォルト値を設定できる。宣言内のデフォルト値はリテラルである必要がある(のか?)
```rust
@@ -50,7 +58,8 @@ Elm 由来の「update」構文も加える。ただし区切りにはパイプ
```rust
let newadsr = { myadsr_param <- attack = 4000.0, decay = 2000.0 } // attack フィールドのみ上書きして新しいレコードを生成
let newadsr = { myadsr_param <- attack = 4000.0, decay = 2000.0 }
// attack,decay フィールドのみ上書きして新しいレコードを生成
```
これは以下のような構文糖衣として実装できる。