Haskell:
Ermittlung der Zeichenkettenlänge
How to:
main :: IO ()
main = do
let text = "Hallo Welt"
print $ length text -- Gibt die Länge des Strings aus
Ausgabe:
10
Deep Dive
In Haskell, ist die Funktion length
ein Teil der Prelude und zählt die Elemente einer Liste. Da Strings in Haskell Listen von Charakteren sind, zählt length
einfach die Charaktere. Das ist einfach und elegant, aber nicht immer effizient bei langen Strings oder wenn nur geprüft werden soll, ob die Länge einen bestimmten Wert überschreitet.
Historisch gesehen hat Haskell immer versucht, Operationen so generisch wie möglich zu gestalten. length
ist da keine Ausnahme. Es funktioniert nicht nur für Strings, sondern für alle Listen.
Alternativen zu length
könnten beispielsweise Lazy Evaluation besser ausnutzen, wie Data.Text.length
aus dem text
Paket, das speziell für Textoperationen entworfen wurde und oft eine bessere Performance als die Standard-String-Implementierung bietet.
In Bezug auf Implementation, length
ist eigentlich durch die Funktion foldr
realisiert, die über die Liste iteriert und dabei ein akkumulatives Ergebnis aufbaut – in diesem Fall die Zählung der Elemente.
See Also
- Die Haskell Prelude Dokumentation: https://hackage.haskell.org/package/base/docs/Prelude.html
- Das
text
Paket für effizientere String-Operationen: https://hackage.haskell.org/package/text