Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

My guess is that they only include the types of the parameters to disambiguate between overloads. Since you can't overload based on the return type they don't include it.

C# is fantastic compared to Java and seems to avoid a lot of the crap. But F# trumps C# in just about every aspect, apart from having lots of funds for tooling.



F# has downsides too. It's a way more complicated language with way more magic (type providers, custom computation expressions etc.) compared to c#.


C# has "computation expressions", except they are hard-coded into the compiler. It has duck typing, but it's hard-coded into the compiler. So instead of understanding a general concept, you learn specific instances. That's certainly less elegant, and I'd guess just as complicated - but I'd say that's more magic on C#'s side since in F# it's just simple concepts repeated.

I don't know if type providers are more complicated than partial classes, and they probably should have been some generic macro system instead of just type generators.

I don't have a good definition for complicated, but I'd be surprised if C# is actually less complicated. (Something number of core concepts and interactions.) Certainly if we take expressiveness/complication F# come out far ahead.




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: