Ich habe das letzte Jahr damit verbracht, eine kommerzielle Spiel-Engine in Haskell zu entwickeln, und für uns waren die Erfahrungen überwiegend positiv. Unsere Spielewelt ist komplex und Haskell hat es einfach gemacht, den Konvertierungsprozess von einem Editor-Format in ein Game-Engine-Format zu modellieren. Ich würde es hassen zu überlegen, wie dieser Code in einer imperativen Sprache aussehen würde.
Gelegentlich sind Speicherplatzlecks aufgetreten, und obwohl sie einige Probleme verursacht haben, waren sie im allgemeinen Schema nur geringfügig (z. B. im Vergleich zum Auffinden von Deadlocks in Java-Projekten ähnlicher Größe) und wurden behoben blieben sie fest.
Wir verwenden FRP ähnlich wie Yampa, und es ist sicherlich eine Lernkurve damit verbunden, aber wenn das vorbei ist, ist die Erfahrung sehr positiv. Bibliotheken waren für uns kein Problem - alles, was wir brauchten, war verfügbar. Verzögerungen bei der Speicherbereinigung waren ein besonderes Problem, da es sich um eine eingebettete Plattform handelt. Wir haben C ++ zum Verwalten der Animation verwendet. Leistung war auch ein Problem, da dies eine eingebettete Plattform (= langsamer Prozessor) ist. Wir haben einige C gemacht und wir suchen auch nach neuen Haskell-Technologien wie Accelerate. Der C ++ - Animator war schon früh eine Designentscheidung und die Stellen, an denen der Code zu langsam ist, sind nur sehr kleine Bereiche. Langfristig wollen wir unser gesamtes C in Haskell übersetzen.
Haskell hat eine schwierige Aufgabe leicht gemacht, und all die Schwierigkeiten, die ich gerade erwähnt habe, waren im Vergleich zu der großen Menge an komplexem Code, der sauber, wartbar und praktisch unzerbrechlich ist, winzig. Parallelität wird in Kürze ein Thema in der Spieleentwicklung sein, und wir sind sehr gut in der Lage, damit umzugehen. Einige meiner Aussagen treffen möglicherweise nicht auf kleine Projekte zu, da wir uns auf lange Sicht in diesem Bereich befinden. Daher sind Startkosten wie Lernkurven, Bibliotheksunterstützung usw. weitaus weniger ein Problem.