Reputation: 19810
I've been using F# in scripting (data science work) and developing class libraries to use with C#. In the latter case, I've been creating modules with pure functional code.
If I wanted to start developing large applications entirely in F#, I'm not sure how I'd structure it. I find the functional style of development very intuitive, but can it scale to large enterprise applications? Is it more common to, say, use an OO structure and then flesh out the objects using functional code?
Intuitively, it feels like writing lots of functions without some kind of class structure could get unwieldy. But I'm perfectly willing to accept that might just be down to years of "brainwashing" from working on OO projects.
Presumably there must be Haskell enterprise applications that are entirely functional, so maybe this is also true in F#. Or maybe it's a lot of pain to do everything functionally, so F# devs mix and match. I don't know.
Can anyone point me at articles that discuss how to scale up the functional paradigm to large enterprise application development?
Upvotes: 3
Views: 534
Reputation: 243051
I don't have a complete answer to the question, but I think there is a lot you can learn from some of the large community projects in F#. They might not be large enterprise software, but they are fairly large if you count all the F# dependencies they use.
I think that well-designed functional libraries can be extremely composable and this is an approach that works overall quite well for the community.
All of this focuses more on components (libraries) than complete applications, but I think the complete application can very well be just s thin layer combining multiple composable components together.
Upvotes: 8