Haskell:
Wycinanie podłańcuchów

How to:

“## Jak to zrobić:”

-- Użycie funkcji 'take' i 'drop' dla wyciągnięcia podciągów
substring :: Int -> Int -> String -> String
substring start end str = take (end - start) (drop start str)

-- Przykład użycia
main :: IO ()
main = do
    let text = "Witajcie w świecie Haskell!"
    putStrLn $ substring 8 15 text  -- wydobywa "w świe"

Output będzie wyglądać tak:

w świe

Wykorzystanie Data.Text dla efektywności:

import qualified Data.Text as T

-- Przykłady z `Data.Text`
textSubstring :: Int -> Int -> T.Text -> T.Text
textSubstring start end txt = T.take difference (T.drop start txt)
  where
    difference = end - start

-- Przykład użycia z 'Data.Text'
main :: IO ()
main = do
    let text = T.pack "Funkcje w Haskell są super!"
    T.putStrLn $ textSubstring 17 22 text  -- wydobywa "są sup"

Output będzie:

są sup

Deep Dive:

“## Wgłębiamy się:”

Wczesna wersja języka Haskell pojawiła się w 1990 roku. Od tego czasu manipulacja stringami często korzystała z modułu Data.List. Funkcje take i drop były podstawą do tworzenia funkcji operujących na ciągach znaków. Później, dla lepszej wydajności i obsługi unikodowych tekstów, wprowadzono bibliotekę Data.Text.

Wyciąganie podciągów jest często używane na przykład w weryfikacji danych formularzy lub parsing’u plików – ważne zadania w realnych aplikacjach. Implementacja może się różnić w zależności od konkretnych wymagań i charakterystyki analizowanych danych.

Alternatywą dla Data.Text może być Data.ByteString w sytuacjach, gdy pracujemy z danymi binarnymi lub gdy optymalizacja pod kątem zużycia pamięci czy prędkości wykonania jest kluczowa.

See Also:

“## Zobacz również:”