i habe eine Funktion, die zwei Elemente aus einer Liste nehmen und ein Element aus der zweiten Liste, aber es gibt ein Problem, wenn die gegebene Liste nur ein Element aufweist:Haskell, zwei Elemente aus einer Liste gefolgt von einem Element andere Liste? (Pattern matching)
Beispiel:
*Main> g2 [1] [5..10]
[1]
ich möchte eine Ausgabe wie diese haben:
*Main> g2 [1] [5..10]
[1,5]
Es ist für Liste arbeitet mit mehr als 1 Element:
*Main> g2 [1..5] [8..10]
[1,2,8,3,4,9,5]
*Main> g2 [1,2,3,4] [6,7,8,9]
[1,2,6,3,4,7]
Mein Code:
g2 (x1:x2:xs) (y:ys) = x1:x2:y:(g2 xs ys)
g2 (x1:[]) y = x1:[]
g2 [] ys = []
Ich denke, dass ich ein Muster vergessen.
Ihre zweite Klausel direkt diesen Fall Adressen. Es adressiert es ganz offensichtlich nicht nach Ihrer Spezifikation! - Beachten Sie, dass Listen mit einer festen Anzahl von Elementen im Allgemeinen mit Listensyntax anstelle von ':' konstruiert/dekonstruiert werden, d. H. Schreiben Sie '[x & sub1;]' anstelle von 'x & sub1;: []'. – leftaroundabout