News for hackers. Stuff that matters.
Re:What is .NET, and why should you choose it? by delta_p_delta_x on Tuesday February 14, 2023 @01:59PM (#34794218)
> Union types

Yes, these are missing in C#.

> Object literals

You could use records[1], or anonymous types[2].

> Functions as first class citizens

There's delegates[3] and lambda expressions[4]. Is there anything that's missing here that you need?

You can use lambda expressions almost exactly like you might in JS/TS, even omitting the type:

  var squared = x => x * x; 
And if you want even more functional, you could always use F#.

[1]: https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...

[2]: https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals...

[3]: https://learn.microsoft.com/en-us/dotnet/api/system?view=net...

[4]: https://learn.microsoft.com/en-us/dotnet/csharp/language-ref...

Re:What is .NET, and why should you choose it? by prmph on Tuesday February 14, 2023 @02:53PM (#34794989)
> You could use records[1], or anonymous types[2].

Not quite with directness of JS.

> There's delegates[3] and lambda expressions[4].

Again you can get something equivalent, but not without some ceremony. It’s not as frictionless as with JS.

Re:What is .NET, and why should you choose it? by delta_p_delta_x on Tuesday February 14, 2023 @09:53PM (#34799426)
> It’s not as frictionless as with JS.

I'm not sure how much less friction you want than directly declaring lambdas, or LINQ, or any of the newer functional constructs.

Like I said, if you want more functional, there's F#, which is a dialect of ML.

Re:What is .NET, and why should you choose it? by kaba0 on Wednesday February 15, 2023 @08:09AM (#34803307)
I think your problem is just structural vs nominal typing, in that you can’t get away from the former.