
Hi Dave,
This is probably stating the obvious but...
I'm not sure that impure features are necessary if you are thinking of using Haskell as a component language -- a component language which is functional -- which will be used for parts of systems where it is believed to be appropriate. I'm working on an industrial project in a university setting and (once I get this damned PhD written up) will be working on an image processing/archiving system. I plan to use Haskell as a language to be called from the main C++ code for those algorithms which are easy to code in Haskell but not in C++. I doubt that I'll be using anything which isn't pure functional (e.g., monads) simply because I can't conceive of any problem where using them wouldn't mean the particular algorithm wouldn't be better written in C++. I've been criticised (possibly rightly :-) ) for saying that part of the reason why functional languages aren't more widely used is that people who understand C regard them as weird. (This isn't theory--this is what the people I work with say to me; I may just work with atypical people :-) ) It seems much more likely that they'll become popular if they can enroach from being component languages, rather than expecting a full beach-head of whole systems being implemented entirely in functional languages.
Of course, I'm wrong about lots of things...
I agree with you concerning the usage of functional languages for industrial purposes. Of course, C/C++, Java, etc. are more common than Haskell. However, there are specific "industrial" problems that can be solved much easier when using a functional language - and in the "real world" that's quite often the case. However, very often industry people don't see this - because they just don't know the 'declarative alternative'! In my opinion, there is a great chance for functional languages in industry, but currently they are just not popular enough. I also agree with you that the way of combining the two worlds of functional and imperative programming and always to use the most suitable language is the best possible solution. The integration of Haskell with other languages is already quite good (I think of the FFI and tools like HaskellDirect). This should be further improved!!, f.e. a support of CORBA would be useful. However, I think, that also the (existing) impure part of Haskell is needed - i.e. for interfacing with the outside world. Christian