From 83ba02ec96244218fae5e8bcf16dbf80d2c80edc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E6=B5=A6=20=E7=9F=A5=E4=B9=9F=20Matsuura=20Tomoy?= =?UTF-8?q?a?= Date: Mon, 18 Aug 2025 16:10:43 +0900 Subject: [PATCH] [obsidian] vault backup: 2025-08-18 16:10:43[ --- content/mimiumのレコード型.md | 8 ++++---- content/mimiumの型推論.md | 34 ++++++++++++++++++++++++++++++++++ content/private | 2 +- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/content/mimiumのレコード型.md b/content/mimiumのレコード型.md index 8f65ea4d..a9251b7e 100644 --- a/content/mimiumのレコード型.md +++ b/content/mimiumのレコード型.md @@ -172,10 +172,10 @@ fn mysynth(freq,amp,gate){ ```rust let param = { - freq:1000, - amp:1.0, - gate: 1.0, - phase: 0.0, //余計なパラメーター + freq = 1000, + amp = 1.0, + gate = 1.0, + phase = 0.0, //余計なパラメーター } param |> mysynth //でも、部分型になるのでOK ``` diff --git a/content/mimiumの型推論.md b/content/mimiumの型推論.md index 658f8716..bffada6c 100644 --- a/content/mimiumの型推論.md +++ b/content/mimiumの型推論.md @@ -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リテラルが実行されてコンストラクタが呼ばれた時どうなるか + + + + diff --git a/content/private b/content/private index ce12ada3..25e65c14 160000 --- a/content/private +++ b/content/private @@ -1 +1 @@ -Subproject commit ce12ada3f0ecfda7a7503c37b840a0466f5b0d55 +Subproject commit 25e65c1419e4907e36f60566a5e74ed886762f26