Haskell Ausdrucksstark



  • Man liest ja immer wieder, dass Haskell besonders Ausdrucksstark sein soll. Was soll das sein? Wie ist eine Programmiersprache Ausdrucksstark? Was ist an Haskell besonders gut? Könnt ihr da mal ein paar Beispiele zeigen?



  • Salopp gesagt ist eine Sprache ausdrucksstark, wenn man viel boiler-plate Code umgehen kann und mit wenig (kryptischen) Konstrukten/Anweisungen an's Ziel kommt.



  • Fakultät von 20 in Haskell:

    product [ 1..20 ]
    

    oder

    factorial 0=1
    factorial x=x * (factorial x-1)
    factorial 20
    


  • Quicksort (mit primitiver Pivotwahl):

    quicksort :: Ord a => [a] -> [a]
    quicksort [] = []
    quicksort (x:xs) = quicksort [y | y <- xs, y <= x] ++ [x] ++ quicksort [y | y <- xs, y > x]
    

    Haskell erlaubt es, auf einer unglaublichen abstraken Ebene (d.h. oft auch näher an der Mathematik) zu programmieren. Das ist oft viel angenehmer, als bis ins Detail zu gehen. Man beschreibt eher was man tut, als wie man es tut.


  • Mod

    "Ausdrucksstark" ist irgendwo auch Profi und Fanboy Gelaber Blub Blub...

    naja, eigene Datentypen zusammenbasteln können oder eben explizit Typenumwandlungen und so Zeugs...
    Ich finde ehrlich gesagt, dass Haskell gelegentlich etwas unübersichtlich werden könnte.

    Am besten stellt man sich das ganze in etwa so vor: angenommen, du hast einen wirklich guten, recht flexiblen Taschenrechner. Das kann Haskell am Anfang auch sein.
    Aber dann...
    der Taschenrechner mutiert...
    ...verändert die Struktur, wird zu einer Art FPGA Ding mit virtuellen Schnittstellengimmicks
    ...wird zur Programmier-Bestie
    ...läßt sich schnell umgestalten, neue Funktionen, schneller, eleganter, vorwitziger...
    ...flexible Herangehensweisen an Problemstellungen
    ...verläßliche Synthax, viel weniger Bux
    ...viele nette Überaschungen
    ...recht verfänglich
    ...usw.
    Hier ist in etwa zusammengefasst, was dazu zu sagen ist:
    http://www.ibm.com/developerworks/linux/tutorials/l-hask/


Anmelden zum Antworten