Ich bin gerade lernen Haskell, so sorry, wenn meine Frage ist dumm. Ich lese gerade learnyouahaskell.com und bin jetzt bei Kapitel 5 "Rekursion". Es gibt ein Beispiel für die Implementierung der Standardfunktion "reverse":
reverse' :: [a] -> [a]
reverse' [] = []
reverse' (x:xs) = reverse' xs ++ [x]
Aber es scheint, dass es in O(N^2) Zeit läuft, während die Standardumkehr in O(N) läuft (ich hoffe es). Der folgende Code veranschaulicht dies:
sum (reverse [1,2..1000000]) -- runs pretty fast
sum (reverse' [1,2..1000000]) -- never finishes
Also habe ich mir überlegt, wie ich meinen eigenen Rückwärtsgang schneller einführen kann. In imperativen Sprachen ist das ziemlich einfach zu bewerkstelligen. Vielleicht brauche ich dazu etwas fortgeschritteneres Material aus späteren Kapiteln? Jeder Hinweis ist willkommen.