Gepostet: |
Umdrehen von Listen | ||||||||||
Ich habe disen Code zum Drehen von Listen geschrieben und verstehe die Fehlermeldung von Hugs nicht. Ich habe schon diverse Sache ausprobiert aber es hat nichts geklappt.
Fehlermeldung:
|
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Das Problem liegt bei schubse xe : x. Der : Operator erwartet links ein Element (du gibst ihm eine Liste) und rechts eine Liste (du gibst ihm ein Element). Eine mögliche Lösung wäre stattdessen schubse xs ++ [x]. Allerdings hat diese naive Lösung eine wirklich furchtbare Performance (versuche mal, den Ablauf für eine vierelementige Liste oder so nachzuvollziehen), und könnte z.B. mit einem Akkumulator oder durch Verwendung einer Fold-Funktion wesentlich verbessert werden. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Vielen Dank. Es funktioniert. | |||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Deine Implementierung hat übrigens noch einen Schönheitsfehler: Du kannst keine leeren Listen drehen Hier noch einmal die Version mit Akkumulator:
Im Prinzip furchtbar einfach: Die Hilfsfunktion go stapelt das erste Argument ab und das zweite Argument (den Akkumulator) auf. Wenn nicht mehr zum Umstapeln da ist, gibt sie das zweite Argument zurück. Die Version mit einem Fold sieht so aus:
|
|||||||||||
Zum Seitenanfang | |||||||||||