Визначення довжини рядка

Haskell:
Визначення довжини рядка

Як це зробити:

main :: IO ()
main = do
    let str = "Привіт, Haskell!"
    print $ length str

Вивід:

16

Заглиблення:

Сама функція length в Haskell насправді проста, але вона не обмежується рядками ─ вона приймає будь-який список. Оскільки рядок є списком символів, length просто підраховує елементи цього списку.

Історично, функція length є частиною стандартної бібліотеки Haskell з самого початку. Але слід зауважити, що вона не завжди найкращий вибір для великих текстових даних через свою обчислювальну складність у O(n).

Щодо альтернатив, для більших або лінивих структур даних існує Data.Text.length з бібліотеки text, яка оптимізована для роботи із текстовими даними.

import qualified Data.Text as T

main :: IO ()
main = do
    let str = T.pack "Привіт, Haskell!"
    print $ T.length str

Така оптимізація бібліотеки text дозволяє більш ефективно працювати з великими чи потоковими даними, оскільки Data.Text представляє текст у компактному і ефективному у пам’яті форматі.

Послання на джерела: