When using Java 16 and C# 9 the code can almost be Rust/Haskell like, even more in upcoming Java 17 and C# 10.
I’m waiting on a blog post showing off the new features :)
Any areas in particular you're thinking of in this code? I was trying to use as bleeding edge of features I could find.
I was just speaking in general, haven't looked into detail into the code.
For example, more pattern matching stuff is coming on both languages.
Apparently Java still won't have algebraic data types, which are very useful for this kind of code. It does have records, which are like kotlin data classes, a slightly more compact switch statement, and "pattern matching" which isn't actually pattern matching, it just allows you to omit a cast in an if branch if the if condition checks the type using instanceof.
Actually it's not completely true, in Java 17, the switch statement will be able to "match" a class name, and with sealed + permits and records you can have something like algebraic data types.
Still, seems like no destructuring records, but maybe it's not strictly necessary.
That just sounds like a product type with some dynamic checking, no?