3,481 karma · joined February 12, 2008
There are other good reasons though. Modern day F# is (except for a very small number of type resolution foibles) 100% backwards compatible to the first release. This is a huge problem for Haskell in business. Also, Type Providers are totally awesome for scripting over structured data.
In practice you catch these out at the boundaries and have nice clean null-free F# code.
Seems like it would be a pretty easy problem to fix if you're not playing fast and loose.
It's tiny and way more powerful than yet another C dialect.
A better approach I think would to use FRP (functional reactive programming) on streams of events which eventually sends messages to an agent (one for each category of concern). This enforces a clean separation and allows for simple inspection and testing.
It also has the added benefit of allowing you to scale easily by putting the different agents on different machines, or even sending messages to one of several identical agents randomly.
It's a beautifully simple algorithm with uses in almost every field.
Here's a more informative link http://cse331.wordpress.com/2009/09/11/lect-4-gale-shapley-a...