Results 1 to 7 of 7

Thread: Hilfe Bsp 1.7 19.01.2012

  1. #1
    Master
    Join Date
    Nov 2011
    Posts
    147
    Thanks
    27
    Thanked 6 Times in 6 Posts

    Hilfe Bsp 1.7 19.01.2012

    Code:
    p (a:b:l) xs ys = p l (a:b:xs) (b:ys);
    p _ xs ys = (sum xs, product ys);
    t7 = (p [mnr!!5, mnr!!6] [] [], p mnr [] [] );
    Hallo ich sitze seit eine Stunde an diesen Bsp und ich verstehe immer noch nicht warum diese Ergebnis geliefert wird (( 11, 6 ),(15,15)) bei zB Mat#: 0123456

    Also ich gehe so vor:
    beim p [mnr!!5, mnr!!6] [] [] == p [5,6] [] [] rufe ich zuerst den Ersten Zeile -> p (5:6:[]) [] [] = p [] (5:6:[]) (6:[])
    dann von die Ergebnis von erste Zeile fahre ich fort zum zweiten Zeile -> p _ [5,6] [6] = ( 11, 6 ). so weit gut.

    Aber beim zweiten Argument von t7 wird es so nicht funktionieren. p [0,1,2,3,4,5,6] [] []. So zuerst die Erste Zeile - > p (0:1:[2,3,4,5,6]) [] [] = p [] (0:1:[]) (1:[]). Jetzt die Zweite Zeile -> p _ [] [0,1] [1] = (1, 1). !!!Hier die Ergebnis stimmt nicht weil Hugs liefert mir (15,15)

    Was mach ich falsch?
    Last edited by J. Dillinger; 14-06-2012 at 17:53. Reason: Faslch ausgedrückt

  2. #2
    Master i>u's Avatar
    Join Date
    May 2010
    Posts
    124
    Thanks
    0
    Thanked 30 Times in 24 Posts
    Quote Originally Posted by J. Dillinger View Post
    Code:
    p (a:b:l) xs ys = p l (a:b:xs) (b:ys)
    p _       xs ys = (sum xs, product ys)
    
    t7 = (p [mnr!!5, mnr!!6] [] [], p mnr [] [] );
    p (0:1:[2,3,4,5,6]) [] [] = p [] (0:1:[]) (1:[])
    Code:
       p (0:1:[2,3,4,5,6]) [] []  ==>  p [2,3,4,5,6] (0:1:[]) (1:[])
    -- p (a:b:l          ) xs ys  ==>  p l           (a:b:xs) (b:ys)
    ghci hat uebrigens auch einen debugger.
    probier mal
    Code:
    :l bla.hs
    :set stop :list
    :step t7
    :step
    :step
    ...

  3. #3
    Master
    Join Date
    Nov 2011
    Posts
    147
    Thanks
    27
    Thanked 6 Times in 6 Posts
    Quote Originally Posted by i>u View Post
    Code:
       p (0:1:[2,3,4,5,6]) [] []  ==>  p [2,3,4,5,6] (0:1:[]) (1:[])
    -- p (a:b:l          ) xs ys  ==>  p l           (a:b:xs) (b:ys)
    ja aber ob es p [2,3,4,5,6] (0:1:[]) (1:[]) oder p [] (0:1:[]) (1:[]) ist es egal oder, wiel dann wird es in den zweiten Funktion fortgefahren
    p _ xs ys = (sum xs, product ys);
    und weil es in den ersten Argument _ steht ist es egal ob die liste leer ist oder Elemente enthält.

    Ich bin mir nicht sicher wann die zweite Funktion aufgerufen und ob sie immer aufgerufen wird.
    Last edited by J. Dillinger; 14-06-2012 at 18:54.

  4. #4
    Master i>u's Avatar
    Join Date
    May 2010
    Posts
    124
    Thanks
    0
    Thanked 30 Times in 24 Posts
    Quote Originally Posted by J. Dillinger View Post
    ja aber ob es p [2,3,4,5,6] (0:1:[]) (1:[]) oder p [] (0:1:[]) (1:[]) ist es egal oder, wiel dann wird es in den zweiten Funktion fortgefahren
    p _ xs ys = (sum xs, product ys);
    und weil es in den ersten Argument _ steht ist es egal ob die liste leer ist oder Elemente enthält.

    Ich bin mir nicht sicher wann die zweite Funktion aufgerufen und ob sie immer aufgerufen wird.

    Ich verwende WinGHCI und die commando set funktioniert nicht!!!
    die "zweite" funktion wird immer dann aufgerufen, wenn das erste argument der "ersten" funktion nicht auf (a:b:l) matched. also in 2 faellen:
    - eine 1-elementige list
    - eine leere liste

    Code:
    
    p (0:1:[2,3,4,5,6]) [] []
    p (2:3:[4,5,6]) (0:1:[]) (1:[])
    p (4:5:[6]) (2:3:(0:1:[])) (3:(1:[]))
    -- [6] matched nicht auf (a:b:l)
    p _ (4:5:(2:3:(0:1:[]))) (5:(3:(1:[])))
    -- aequivalent zu
    p _ [4,5,2,3,0,1] [5,3,1]
    (sum [4,5,2,3,0,1], product [5,3,1)
    (15, 15)

  5. #5
    Master
    Join Date
    Nov 2011
    Posts
    147
    Thanks
    27
    Thanked 6 Times in 6 Posts
    ouuuu, das war es. SEHR vielen Dank für deine Rache antworte.

  6. #6
    Master
    Join Date
    Nov 2011
    Posts
    147
    Thanks
    27
    Thanked 6 Times in 6 Posts
    Hallo @i>u vielleicht kannst du mir ein letztes mal helfen ein evaluation von ein andere Bsp zu machen. Den vorigen habe ich schon verstanden aber in diesen Bsp habe gibts ein dreck in den code. Ich kann ehrlich nicht den Haskell debugger verwenden/verstehen.

    Hier ist das bsp:
    Code:
    p [] = 1000
    p [e] = e
    p (a:b:l) | a <= b = p(b:l)
    p(a:l) = p l + a + p l
    t7 = ((p.drop 4)mnr, p mnr)
    Also ich habe es so verstanden. Wenn es a <= b ist dann wird p(b:l) aufgerufen die eigentlich p(a:l) ist nur mit den parameter b. Also die funktion in der vorletzte zeile wird als:
    Code:
    p(b:l) = p l + b + p l
    ausgeführt oder?

    Funktioniert aber nicht :-(
    Last edited by J. Dillinger; 14-06-2012 at 20:04.

  7. #7
    Master
    Join Date
    Nov 2011
    Posts
    147
    Thanks
    27
    Thanked 6 Times in 6 Posts
    ahhh, ok, ich habs es vestanden wie es geht. Danke

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •