That said, people have used F# for pretty much everything - including data science and analytics, domain modelling (and business application development), testing (Canopy for web testing), build automation (check out FAKE and Paket). I guess you get the most value from F# by using it for some analytical component (implementing some logic), but the above blog post has many great ideas in other areas too.
For example, F# has a better ORM framework than anything in C# with Type Providers.... unless you need to support two databases in the same dll. Then when trying to use nHibernate, we found that Nhibernate mappings expect virtual properties, which F# didn't easily do. So we have a C# project with a few C# classes used by the ORM, then a conversion layer into F# domain objects, which we would've done anyway, because ORM classes are terrible at expressing the domain compared to F# records and unions.
Other than a few weirdnesses like that, we've found it to be great and otherwise a drop in replacement for C#.
I like my current job, a LOT, but it isn't a development shop and they don't want to use F# because they are trying to limit the languages they support right now (Too many legacy apps). Which I understand, but at the same time I think we are really missing out.
Especially because they are developing the front end to be a very Functional Typescrip SPA. Anyway I've been learning F# in my spare time just for the heck of it.
In C#, I think ORM classes have a lot going on, so I prefer to use them only for converting to a data structure.
I've scripted Google Maps scraping using F#. It doesn't showcase any particularly functional features, but you can see there is very little code (relative to C#) in order to accomplish what I needed. [0]
P/Invoke works well, too. I've called native Windows APIs to audit user-mode and kernel-mode memory usage. [1]
The last project generates a Mandelbrot image in parallel. It's as easy as `Array.Parallel.init` on line #81! [2]
[0] https://github.com/ChadSki/MapMaker/blob/master/MapMaker/Pro...
[1] https://github.com/ChadSki/RamCensus/blob/master/RamCensusFs...
[2] https://github.com/ChadSki/FSharpMandelbrot/blob/master/FSha...
Other than that, sometimes there are problems with libraries that specifically target the C# compiler's exact output. Examples are functions that take an object, then dynamically look at the property names instead of just using a dictionary (F# can do this, just isn't a major focus like in C#). Or poorly written expression tree code that only works with C#'s output. That said, the F# community can often find a fix.
Once you adjust to writing so much less code, it's very hard to enjoy writing C#.
It's the old adage of "Show me your [code] and conceal your [data structures], and I shall continue to be mystified. Show me your [data structures], and I won't usually need your [code]; it'll be obvious." -- Fred Brooks
I'm digging this poker hands Kata
http://codereview.stackexchange.com/questions/43831/poker-ha...
http://blog.tamizhvendan.in/blog/2015/07/23/creating-mock-ap...