Twitter (was mache ich gerade?)

    Suche

     

    Credits

    Archiv

    April 2009
    Mo
    Di
    Mi
    Do
    Fr
    Sa
    So
     
     
     2 
     3 
     4 
     5 
     7 
    11
    12
    13
    15
    16
    18
    19
    20
    21
    24
    25
    26
    27
    28
    29
    30
     
     
     
     

    Status

    Online seit 6916 Tagen
    Zuletzt aktualisiert: 17. Apr, 22:03

    Counter & Co.

    Egoload - Verträumter Idealist
    Mein
Koordinaten auf der EgoMap:  93,2
    100% Heidnisch

    Locations of visitors to this page

    Spaß mit Haskell

    Ich bin ja seit einer Weile auf der Suche nach einer faszinierenden, effektiven Programmiersprache, und habe mich deshalb mit Lua und Python beschäftigt. Nicht ins Blog geschafft hat es erlang, obwohl das eine wirklich faszinierende Sprache ist. Zumindest unter FreeBSD hat sie aber Abhängigkeiten zu Java, und das fand ich ganz schön abschreckend. Ich weiß, das Erlang damit nichts am Hut hat, ich konnte aber nicht in Erfahrung bringen, ob es auf der JVM aufsetzt, oder nur zum Build notwendig ist.
    Lua ist eine schöne, kleine Sprache mit einem eleganten Sprachschatz. Hier hatte ich bedenken, ob es möglich ist, größere Projekte stabil zu verwirken, Shell- und Perlscripte neigen ja auch dazu, irgendwann instabil zu werden. Ja, ich weiß, mit der nötigen Disziplin kann man das umgehen, und mit der ZSH habe ich eine Shell gefunden, die sowohl eine mächtige Scriptsprache wie auch ein einfaches Typesystem zur Verfügung stellt. Von echten Arrays und Hashes mal abgesehen. :-)
     
    Wie ich genau eigentlich auf Haskell kam, weiß ich nicht genau. Auf jeden Fall stolperte ich über einige Tutorials im Netz, bei denen ich zwischendurch echt Kopfschmerzen bekam. Gut, sich eingangs mit dem Lambda Kalkül (Wikipedia) zu beschäftigen ist trocken und recht unverständlich, obwohl es mit Das gefürchtete Lambda Kalkül eine nette Einführung gibt (danke nochmal Rhalina für den Link!)
    Dann kam aber das Buch Real World Haskell vom O'Reilly Verlag, und letzte Tage bin ich über Learn You A Haskell gestolpert. Seitdem experimentiere ich mit Lazyness, Lists und List comprehensions. Ich bin also quasi im 1. Kapitel von Learn You A Haskell<> (LYAH), und im 3. Kapitel von Real World Haskell (RWH).
     
    Ja, und seitdem beseelt mich bei der Beschäftigung mit dieser Sprache sowas wie kindliche Begeisterung. Um nicht zu sagen: Haskell ist cool. Lazyness ist ein echt nützliches Werkzeug, und Haskell erweist sich als sehr ausdrucksstarke Sprache:
     
    Nehmen wir z.B. eine Reihe von Listen, die Tiere enthalten:
    animals=["hund","katze","maus"]
    animals'=["elephant","hai","huhn"]
    animals''=["schnecke","grashuepfer","marienkaefer"]
    
    carnivores=["hund","katze","tiger","loewe","baer","hai"]
    fishes=["hai","delphin","lachs","goldfisch"]
    Werden diese Listen in den Interpreter ghci geladen, kann man mit ihnen interessante Dinge ohne großen Aufwand anstellen:
     
    *Main> [ x | x <- animals, x `elem` carnivores ]
    ["hund","katze"]
    *Main> [ x | x <- animals', x `elem` fishes ]
    ["hai"]
    *Mai>
    Hier wird praktisch die Liste animals ausgelesen und damit eine neue Liste erzeugt, wobei nur Elemente berücksichtigt werden, die auch in der Liste carnivores vorkommen. Im zweiten Beispiel werden aus der Liste animals' die Fische extrahiert. Das finde ich schonmal schick ausdrucksstark.
    alios (Gast) - 17. Apr, 15:38

    Ja, diese Sprache hat echt das potential zum glücklich machen... Du wirst das folgene Beispiel vermutlich schon kennen, aber ich finde es immer wieder schön, da es list comprehension und pattern matching zeigt und einfach so schön kurz ist.

    qs [] = []
    qs (x:xs) = let lt = [x' | x' <- xs, x' < x]
    gt = [x' | x' <- xs, x' >= x]
    in qs lt ++ [x] ++ qs gt

    cptsalek - 17. Apr, 21:56

    Ne, das Beispiel kenne ich noch nicht. Vermutlich komme ich da aber in Kürze hin. Zumindest kann ich zum großen Teil verstehen, was da passiert, und den Rest zusammen reimen. Die Liste qs hat mir dann den letzten Hinweis gegeben: Das ist ein Quicksort, nicht wahr?
    Und damit die kürzeste Implementierung dieses Problems, die ich bisher gesehen habe. ^^

    Trackback URL:
    https://cptsalek.twoday.net/stories/5649413/modTrackback

    Aktuelle Beiträge

    Im happy I finally registered
    Excellent write-up. I absolutely love this site. Continue...
    http://mittenmail3.isblog.net/pick-a-winner-via-hashtag-entry-for-twitter-and-instagram-woobox-bl... (Gast) - 17. Apr, 22:03
    Just want to say Hi!
    I all the time emailed this blog post page to all...
    how to get instagram likes (Gast) - 30. Mär, 23:20
    Im happy I now signed...
    Hello, There's no doubt that your website could possibly...
    buy instagram followers cheap (Gast) - 30. Mär, 09:27
    Hallo Miau!
    Ich will einen schönen Tag wünschen, mit unseren Schmusekatzen....
    SCHLAGLOCH - 4. Apr, 14:51
    Sehe hier nut Tag und...
    Wo ist das Jahr an dem der Text geschrieben wurde?
    Gast (Gast) - 3. Mär, 20:38

    User Status

    Du bist nicht angemeldet.

    ...wenn man trotzdem lacht
    Atari Mega ST
    Auf Arbeit
    Bloggen
    Bookmarks & Links
    BSD
    Bundeswehr
    CCC07
    Computing
    Contentmafia
    Datenschutz
    DRM
    Fahrrad
    Finanzkrise
    Fundsachen
    G8
    ... weitere
    Profil
    Abmelden
    Weblog abonnieren