Avatar
omochimetaru 5/1/2021 6:35 AM
型扱いにした場合、
6:35 AM
let a: async Int = foo() みたいに書く事になるけど、
6:35 AM
foo() の返り値の型 Int が async Int 型に暗黙昇格するのはまあいいとしても、
6:36 AM
それが、foo() から値が返った 型変換のタイミングではなくて、 fooの呼び出しそのものを 並行に投げる事になるのは、
6:36 AM
他の言語機能と比較すると唐突な挙動に感じます
6:37 AM
async let だと、 let の初期化代入文そのものにかかってるmodifierになるので、
6:38 AM
右辺値の処理に特別な変更があるのはまあ構文構造的には妥当に見える。
6:38 AM
let a = spawn foo() 構造的な観点で、「並行に投げる」作用を記述する点で言えば↑これでも良さそうな気がするけど・・・ (edited)
6:39 AM
右辺値の処理を並行に投げるだけじゃなくて、左辺値の「変数aをこのスコープの中でawaitせねばならない」っていう (edited)
6:39 AM
特別な静的な制約も導入しているという意味では
6:40 AM
let文自体の属性になっているのがやっぱり一番妥当に思います (edited)