Hi Matt,
Interesting questions.
1. Is doing this in F# a good idea?
My gut reaction says no, put the data in a relational database slap some indexes on the apporiate columns and let the db take the strain. However if you really think a hand code solution would be better F# is generally good at tree mainipulations and that sort of thing.
2. Is doing this in F# a good idea?
Wouldn't have thought so. I suppose you may see a few more allocations and therefore objects that require collecting if you stick to a very pure functional apporach and use lots of immutable data structures, but the GC in .NET is self tuning and you should see that it handles this quite efficently. The preformance counters in .NET are very good so you can easily profile your app and using perfmon to see if there is too much time spent in GC and adjust the app accordingly. But I wouldn't think you'd need to.
3. Is using an F# data structure from C# painful?
It can be but doesn't have to be. The answer in a nut shell is, union types and tuples look a bit strange form C# records and basic types like strings look fine. I cover this in detail "Foundations of F#".
4. Anyone got an implementation they'd like to share?
No sorry.
Cheers,
Rob
Robert Pickering
http://strangelights.com