That's a lot of goodies in a new release! It seems it is outpacing the JVM's development...
Except...
this '''let! a = fetchA() and! b = fetchB()''' really puzzles me. Does C# have a high-level syntax for concurrency timing? [something that Java is strongly lacking, and that Typescript did solve with Promise.all(), which is an ugly syntax, from my perspective]
Any elaboration on this is very welcome.
let! a = fetchA() and! b = fetchB()
Whereas `Promise.all` usually requires all promises to have the same type (returning a `List<T>` or even a `List<obj>`)
.See https://learn.microsoft.com/en-us/dotnet/fsharp/whats-new/fs...
const [a, b] = await Promise.all([fetchA(), fetchB()]); // => a: A, b: BThat TypeScript supports this is yet more complexity introduced to cover usages of an API not designed around types.
Also, C# doesn't need nearly as many massive changes like project Valhalla because they got a lot of those design choices right from day 1 (mostly by looking at what Java did that was dumb and avoiding it).