but if you're writing FP in a legacy environment
with lots of nasty complex data structures you have
a big headache. This would not be true in the same
data environment with a well-constructed OO tier.
With fp languages the tendency is to think in data and abstract via functions. If your functional tier is well-constructed then all is good right? [insert discussion here about what makes a well-constructed functional tier] ;-)