für "richtige" Endanwenderprogramme
Ich halte Googles Suchdienst schon für eine "richtige" Endanwendersoftware.
Die Sprache ist Turing-complete, sprich, man kann mit ihr genauso viel machen, wie mit Java, C, C++ usw.. (auf Ebene der Berechenbarkeit). Die Eignung hängt dann eher vom Benutzer ab: Nicht jeder ist dafür geeignet, die Sprache einzusetzen (nämlich nur der, der sie gelernt hat, wobei das eben mehr oder minder schwer ist, zumindest aber dem "Standard-Programmierer" fremd erscheint).
Ich behaupte mal ganz frech, dass der Durchschnitts-Codefrickler (?ordinary programmers?, wies der dieser Spielenentwickler da nennt), keine Lust / Zeit / Verständnis für das Erlernen der Sprache aufbringt. Ergebnis eben, dass sich die funktionale Programmierung nicht als Standard-Konzept durchgesetzt hat, sondern nur wenigen Freaks für Spezialanwendungen vorbehalten ist.
Oder um eine Ebene weiterzugehen: Mit VB oder Java hacken viele ein Stück Software zusammen, Mathe muss man dazu aber noch nicht können.
Weil du in deinem ersten Post die GUI ansprichst: Ich habe mir sagen lassen, dass zumindest im Bereich der 3d-Graphik (Raytracing z.b.) sehr viel funktional programmiert wird.
Das klingt jetzt so, als würde "richtige" Endanwendersoftware nur unschöne Algos enthalten.
Aber ich stimme dir zu, die Masse an Mainstream-Code ist nunmal schlecht, die Perlen der Informatik findet man woanders.
Und um nicht ganz in einem Traumwolke zu verschwinden: Baumstrukturen gibt es überall, damit wirst du dich als Informatiker rumschlagen müssen. Das geht los bei Menüs (z.b. deine Menüleiste in fast jedem GUI-Programm: Ein Knopf, viele Menüeinträge, die ihrerseits evtl wieder weitere Untermenüs aufklappen. Oder eine KI, die Spielzüge vorausberechnet. Oder diverse Sortieralgorithmen (HeapSort), oder einfach nur Bäume als Speicherstrukturen (da gibt es eigene Vorlesungen darüber, soviele sind das).
Fakt ist, dass man sowas am leichtesten (ja, am leichtesten / verständlichsten) per Rekursion löst (der Baum an sich ist rekursiv definiert), und genau da lernt man in der funktionalen Programmierung, wie man damit umgeht.
Sicher wirst du im industriellen Umfeld eine andere Sprache benutzen, aber die funktionalen Konzepte wirst du häufig genug brauchen. Und da hilft es wirklich sehr, sich das anhand einer funktionalen Sprache (bzw. eines funktionalen Pseudocodes) zu überlegen, da man dann sonstigen Overhead nicht mitschleppt. Siehe z.b. Pattern Matching: formulier sowas erstmal mit if-Klauseln, und schon ist der Code deutlich unlesbarer geworden.
Im Übrigen wirst du wohl auch irgendwann die Theoretische Informatik hören (müssen), und da wirst du dich dann gelegentlich zurückerinnern.
Kurzes Fazit: Wenn dich nicht irgendwann die Lust an funktionaler Programmierung packt, wirst du Haskell z.b. wohl auch nie wiedersehen. Aber die Konzepte wirst du draufhaben, und die braucht man überall, auch in anderen Sprachen.