Posts by lewurm

    Die erste Zeile verstehe ich nicht ganz gut. p (drop 4 mnr) -> da nimmt man z.B. [4,5,6] wenn die Matrikelnummer [0,1,2,3,4,5,6] ist. [1] ist die Liste fuer die Zahlen die addiert werden und [] ist die Liste fuer das Multiplizieren. Fuer den (10,5) Fall nehme ich an, dass man nur 4 und 5 nimmt damit die Summe 4+5+1=10 wird (wegen [1] wenn es [1,3] waere, dann waere es 4+5+1+3=13). Und dann nur 5 wird genommen? Da die Liste fuer die Multiplikation leer ist, bleibt das Produkt einfach als 5 und Ergebnis wird (10,5)? Was ich nicht ganz verstehe ist welche Zahlen man von der Liste verwendet.


    ok, dann versuch ich die funktion p naeher zu erklaeren. lass uns mal typsignaturen fuer p bestimmen, der einfachheitshalber nehmen wir an dass wir integer listen haben:


    Code
    1. p :: [Integer] -> [Integer] -> [Integer] -> (Integer, Integer]
    2. p (a:b:l) xs ys = p l (a:b:xs) (b:ys)
    3. p _ xs ys = (sum xs, product ys)


    und noch ein wenig renaming damit es deutlicher wird...

    Code
    1. p :: [Integer] -> [Integer] -> [Integer] -> (Integer, Integer]
    2. p (ersteselement:zweiteselement:listenrest) xs ys = p listenrest (ersteselement:zweiteselement:xs) (zweiteselement:ys)
    3. p _ xs ys = (sum xs, product ys)


    der erste case wird ausgefuehrt wenn die erste liste mindestens zwei elemente hat. dabei reduziert es die erste liste und ruft sich selbst wieder auf, damit wird es irgendwann einmal in den zweiten case landen wo dann das tupel berechnet wird. beachte wie die ys liste konstruiert wird; es wird nur das zweite element verwendet.

    Ich wuerde mich freuen, wenn jemand mir folgendes erklaeren koennte:


    p (a:b:l) xs ys = p l (a:b:xs) (b:ys);
    p _ xs ys = (sum xs, product ys);
    t7 = ( p (drop 4 mnr) [1] [], p mnr [1] []);
    {- t7 == ((10,5),(16,15)) -}


    an welcher Stelle hoert das Verständnis auf?

    We are looking for someone who can improve and maintain our infrastructure for the Graal Project. This include services such as continuous integration (building, testing and benchmarking), issue tracking or review system. You are responsible for a cluster of ten machines, including high performance x86 and SPARC machines.

    • Part time (~20h/week) with flexible hours.
    • Salary: VwGr. IIIa


    Important skills (at least some of):

    • Good programming skills (imperative and object-oriented)
    • Web development skills (JavaScript, HTML5 and CSS)
    • Distributed versioning systems
    • Good knowledge of Linux administration


    Nice to have:

    • Python, R
    • Buildbot
    • JIRA and Crucible/FishEye
    • Solaris administration
    • LDAP experience
    • Infrastructure monitoring
    • Ubuntu (apt-get, upstart, …)
    • Apache2
    • MySQL
    • Mercurial


    If you are interested, contact: Gilles Duboscq (duboscq@ssw.jku.at) or Bernhard Urban (bernhard.urban@jku.at)
    If you are interested, but:

    • You are not sure you have the required skills
    • 20h/week is not enough for you
    • You are not sure about the salary


    contact us anyway! We can talk about it.

    Könnte mir jemand das erklären : (let no n= name;in no) . Ich hab in der übung let nicht so viel verwenden und nicht mit ;in . Was macht das genau und wieso (let no n= name;in no) und nicht (let no=name in no) ?

    ; kannst du in diesem Fall ignorieren, ; kann man in Haskell fuer zusaetzliche Strukturierung verwenden. Z.b. ist

    Code
    1. let foo = "asdf"; bar = "jkl" in print (foo ++ bar)

    gleich zu

    Code
    1. let foo = "asdf"
    2. bar = "jkl"
    3. in print (foo ++ bar)


    zu let no n = name; in no: es wird eine einstellige Funktion no definiert, die eben einen Wert n bekommt. Allerdings wird n auf der rechten Seite nicht verwendet, sondern name, das in diesem Fall ein String ist. D.h. no hat die Signatur no :: a -> String.
    Egal welchen Wert man an no uebergibt, es kommt immer der String name zurueck. FWIW, no ist gleich zu const name:

    Code
    1. μ> let name = "Max Mustermann"
    2. μ> let no n = name
    3. <interactive>:11:8: Warning: Defined but not used: `n'
    4. μ> no 1337
    5. "Max Mustermann"
    6. μ> (const name) 1337
    7. "Max Mustermann"

    das erste x wird "gekuerzt" weil es sich um eine Funktionsapplikation handelt. Betrachte zum Beispiel die Funktion (+):

    Code
    1. μ> :t (+)
    2. (+) :: Num a => a -> a -> a
    3. μ> :t (+) 3
    4. (+) 3 :: Num a => a -> a
    5. μ> :t (+) 3 2
    6. (+) 3 2 :: Num a => a


    wenn die Funktion (teilweise) angwendet wird, dann "verkuerzt" sich auch die Funktionssignatur dazu.

    Ich will jetzt nicht pedantisch sein, aber ihr mischt da willkürlich Tuple und Arrays! () Kennzeichnet ein Tuple, [] einen Array.

    ich will auch nicht pedantisch sein, aber:
    * () ist "unit" und hat nichts mit tuple, listen oder arrays zu tun. ist noch am ehesten mit void in anderen sprachen zum vergleichen. fuer tuple verwendet man die konstruktoren (,) , (,,) , (,,,) usw.
    * [] kennzeichnet eine leere liste. arrays sind in haskell was anderes und sind auch nur als library integriert und nicht in die sprache selbst, und haben daher auch keine direkte sprachunterstuetzung (im gegensatz zu listen).

    Danke, gitstats is genau sowas, was ich gesucht hab.
    Nur ich kriegs unter Windows grad nicht zum laufen.


    Code
    1. File "./gitstats", line 50 print '>> ' + ' | '.join(cmds),
    2. ^
    3. SyntaxError: invalid syntax


    Irgendeine Idee?


    was sagt `python --version`?
    wenn 3.*, dann probiers mal mit einer 2er version und vice versa.


    fwiw, gitstat ist nice :)

    oh, jetzt hat das hirn erst geschalten: "Ingress notification - Entities Destroyed by polacantix".
    AHH, PAULCHEN!!! :D

    Wien sieht derzeit etwa so aus: https://rueckgr.at/~paulchen/ingress-20130113.png

    neeeeeein, paulchen ist von der schnittlauchfraktion. KILL IT WITH FIRE^WXMP BURSTER!!111 ;)



    aus dem internen resistance forum (http://www.autgress.at)

    Quote from Dr.Wummi

    Ich hab ein paar Invites zu vergeben, natürlich nur an resistance Spieler in Ö


    Wer einen möchte, sollte sich mit Motivationsschreiben an invites@wummi.at wenden.


    Das mein ich ernst, Invites sind selten und ich möchte sie eigentlich nur an richtig motivierte Leute weitergeben.

    eine Möglichkeit das ganze auf dem I-Phone zu spielen?

    jop :P



    ich hab seit ein paar tagen einen account. die idee ist genial, die atmosphere wird mystisch gehalten. abgesehen vom eigentlichen spiel, gibt es auch immer wieder witzige sidestories, z.b. http://decodeingress.wordpress…-ingress-activation-code/ bei denen man items oder aehnliches erhalten kann.
    in wien, vor allem TU gegend, ist recht viel los. ausserhalb leider tote hose... aendert sich hoffentlich ;)
    leider ist es immer mit dem faden beigeschmack ein mobiler datamining zombie fuer google zu sein :|

    D.h. t2nf (Rat Z (S (S (S Z)))) == Rat Z (S Z) wie im Testfall würde wenn man es ausgibt eigentlich "0/1" ergeben?


    hugs bzw. ghci rufen automatisch show fuer einen wert auf um es in einer stringdarstellung auszugeben, was dann eben der string "0/1" fuer Rat Z (S Z) ist.

    Ich hab ein anderes Problem mit Show. Wenn jetzt Nat und RatNr eine instance von show sind, wie mach ich das, dass die dann bei 2. Punkt 2 wieder in normaler Darstellung ausgegeben werden und nicht als römische oder negative Binärzahlen??

    du meinst bei t2nf? das ist kein String in dem beispielen, sondern nur der berechnete wert. wenn es dir zum entwickeln leichter faellt, kannst du temporaer auch die default implementierung von Show verwenden (das geht mit deriving Show beim data keyword).