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

Big F# fan here.

After going through a dozen languages, and listening in/reading scads of debates on languages, I think the author here misses the point.

Don't get me wrong: the points he makes are valid, and they make for a great language. Where I think the problem is when discussing languages is that languages are an ecosystem. They're groups of people, tools, message boards, IDEs, meetups, and so forth.

F# is great on the things he mentions, but the real strength is the way F# can take a bunch of dotnet guys and slowly move them towards pure functional programming without there having to be a huge learning curve. Like C#? Like your objects and classes? Fine. Do that. Like you FooBar .NET libary? We've got that too.

From your favorite IDE to the places you hang out, it's all the same. Just now with functional programming.

F#, in my mind, is first and foremost a training language, and I don't mean that in a bad way. It exists in an ecosystem where it naturally helps a bunch of devs learn new stuff. (As opposed to most languages that do some core things, then keep adding crap on top year-after-year)

Which brings me to my only criticism of the language: we're growing a community of wannabe Haskell/Erlang guys who are frustrated doing hook-the-wire-up C# in their day jobs. That can lead to language elitism and frustration on everybody's part. I'm not sure how to solve that. It's probably a good thing to have devs interested in upping their game. I think that if you want to move on to a more pristine language, you probably should do that. Understanding F# as an intermediate/training language for those interested in programming in general is a good way to keep needed context. If you expect it to be something that it's not, it's going to lead to frustration.



Maybe Microsoft don't put the effort into the F# ecosystem because it's like the gateway drug to other platforms, which aren't Microsoft. I ended up moving to Haskell after learning F#. I've since moved back to using F# as my primary language, as I'm a recovered type addict, but it does sometimes feel restrictive in its capabilities.


My mission is to help devs, so F# is the best spot for me right now. Having said that, I'm quite interested in the theory, so I'll probably be playing around with Category Theory and Haskell over the next few years.

My biggest technical frustration with F# is just what you pointed out: they started down the OCAML route, then pulled back immediately after somebody figured out it would lead devs away from MS. Now all I hear about is how F# will integrate better into existing MS stuff and complaints about how the C# guys are copying F# stuff (and badly). None of that I'm interested in. None of that helps devs.

And I believe your and my observation are related: the more MS tries to keep F# in the fold, the more tension it's going to build between devs who want to branch out and those who don't.


The way to combat that IMO is to continue to innovate the language improving both the language and the context it runs in (tooling, ecosystem, etc) making it easier to use, more robust, minimize the costs/benefits of changing, etc. Having a great working functional language with access to a large ecosystem and decent tooling makes adoption easier and less risky. There's more to a language choice than features; it has to work for the dev's, the organization and it has to scale to the "good but not passionate" developer.




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

Search: