Allereerst zijn een aantal van die Utrechte docenten een beetje merkwaardig

.
De informatica groep daar is enorm druk bezig met compilers, parsers en pretty-printers. Juist deze problemen zijn vaak zeer goed in een functionele taal op te lossen. Vandaar dat ze zo geinteresseerd zijn in functionele talen.
Het grote voordeel van FP is de stevige wiskundige basis ervan. Mede daardoor is een in de meeste FP talen een enorm krachtig type systeem. Met dit type systeem kan je enorm veel uitdrukken. Generieke of polymorphe functies zijn geen enkel probleem. In een OO taal moet er hier vaak een stevig design achter zitten.
Ik hoorde iemand trouwens nog zeggen dat FP talen snel zijn. Als je hiermee bedoelt dat het snel programmeert (weinig code) dan ben ik het daar helemaal mee eens. De performance is echter zeker niet beter dan een vergelijkbaar probleem in een imperatieve taal. Bij FP moet je aangeven
wat je wilt doen. De compiler bepaalt echter
hoe het gebeurt. Bij IP talen bepaalt de programmeer
hoe het gebeurt, waardoor je daar betere controle hebt over je programma.
Door het krachtige type systeem en het werken met functies, is een FP taal inderdaad ideaal voor parsen. Er zijn helemaal geen parser generatoren nodig, je schrijft de parser gewoon netjes met de hand met behulp van parser-combinators. Hetzelfde geldt voor pretty-printers.
FP heeft het grote probleem dat een functie geen bij effecten mag hebben. Een functie levert namelijk alleen simpelweg iets op. Het schrijven van een file, het tonen van een GUI of het werken via een netwerk is dus altijd een merkwaardige operatie in een FP taal. Haskell heeft hiervoor inderdaad Monads, die op zich wel aardig ontworpen zijn en ook goed werken. Het blijft echter een feit dat dergelijke zaken eigenlijk niet uit te drukken zijn in een
pure functionele taal.
Om ook nog even wat zinnigs te zeggen ;):
Naar mijn mening zal de toekomst waarschijnlijk zijn dat talen in verschillende paradigma''s goed kunnen samenwerken. Het zou bijvoorbeeld ideaal zijn als je vanuit een OO taal even je user-input kan parsen met een functionele taal, die dan een OO-structuur oplevert.
Op verschillende punten zie je al beweging op dit vlak.
Allereerst is er al een taal die alle paradigma''s probeert te combineren. Deze taal zuigt echter en zal dus ook niet interessant worden, zeker niet commercieel.
Verder is er natuurlijk Microsoft .NET. Het fantastische is dat dit framework taal onafhankelijk is. Er wordt op dit moment bijvoorbeeld al gewerkt aan een Haskell voor .NET. Het zal dus mogelijk zijn om vanuit C#, VB of C++ direct met Haskell bibliotheken en programma''s samen te werken. Dit heeft als enorm voordeel dat je elke taal in zijn waarde kan laten en kan gebruiken voor de problemen waar de taal goed in is. Bovendien heeft het als voordeel dat je bij allerlei merkwaardige talen een schat aan bibliotheken kado krijgt. De bibliotheken zijn vaak het probleem bij wetenschappelijke onderzoeks-taaltjes.