shuffle

Schreiben Sie eine Funktion mit Typ

shuffle :: [a] -> [a] -> [[a]]
die xs $ ys berechnet, zum Beispiel:
shuffle "ab" "cd"
  =  ["abcd","acbd","acdb","cabd","cadb","cdab"]
Berechen Sie zunächst (im Kopf)
shuffle "b" "cd" ; shuffle "ab" "d"
und vervollständigen Sie dann:
shuffle [] ys = ??
shuffle xs [] = ??
shuffle (x : xs) (y : ys) = 
       map (x :) ??
    ++ ??


Johannes Waldmann 2004-11-30