Die wohl wichtigste Datenstruktur in Haskell ist die Liste. Da sie als
einfach verkette Liste implementiert ist, arbeitet man meist nur am
vorderen Ende, und so ist es auch kein Wunder dass es zwar eine Funktion
take :: Int -> [a] -> [a]
gibt, die die ersten n Elemente einer
Liste zurück gibt, aber kein entsprechendes Gegenstück, dass die letzten
n Elemente zurück gibt.
In diesem Artikel betrachten wir drei verschiedene Implementierungen
einer solchen Funktion: Wir beginnen mit einer naiven funktionalen
Implementierung, die sich aber als ineffizient herausstellen wird. Um hier
Abhilfe zu schaffen greifen wir auf einen imperativen Algorithmus zurück und
sehen dabei, wie man in Haskell imperativ programmieren kann. Zuletzt finden
wir dann noch eine effiziente, funktionale Implementierung.
Weiterlesen...