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
представляє текст у компактному і ефективному у пам’яті форматі.
Послання на джерела:
- Офіційна документація Haskell про String і функції
length
: https://hackage.haskell.org/package/base-4.16.0.0/docs/Data-List.html#v:length - Бібліотека
text
для оптимізації текстових операцій: https://hackage.haskell.org/package/text - Увод у стандартні типи даних Haskell, включно з
String
: https://www.haskell.org/tutorial/stdtypes.html