[obsidian] vault backup: 2025-08-18 16:10:43[
All checks were successful
Build / build (push) Successful in 9m31s

This commit is contained in:
2025-08-18 16:10:43 +09:00
parent bd38b07724
commit 83ba02ec96
3 changed files with 39 additions and 5 deletions

View File

@@ -52,3 +52,37 @@ float?はfloatとNoneいずれも受け入れられる。float?はfloatのサブ
`float? <: float`
`U' <: U`ならば`{a:T,b:U,c:V}` <: `{a:T,b:U'}`
でも構造的部分型だと[[mimiumでのIOパラメーター#mimiumの多段階計算 と組み合わせる]]の話とコンフリクトする
```rust
//この場合、aとbだけがuiに現れることになる
fn dsp(){
foo(control!({ a = 4.0 , b = 3.0 }))
}
```
```rust
//この場合ならRow Polymorphismになるとかすればいいのか
fn dsp(){
foo(control!({ a = 4.0 , b = 3.0 .. }))
}
```
この時
- control関数は`forall T. (T)->'T `
- 実引数の型`forall r. {a:float,b:float ..r }`(rは列多相のカインド変数)
- fooの引数の要求 `{a:float,b:float?,c:float?}`
これを単一化するとTは`{a:float,b:float,c:float?}`・・・なる
ImcompleteRecordリテラルが実行されてコンストラクタが呼ばれた時どうなるか