Haskell:
Видалення символів за візерунком
How to: | Як зробити:
import Data.List (delete)
-- Видалення конкретного символу
removeChar :: Char -> String -> String
removeChar _ "" = ""
removeChar c (x:xs)
| c == x = removeChar c xs
| otherwise = x : removeChar c xs
-- Використання функції
main :: IO ()
main = do
let result = removeChar 'a' "banana"
putStrLn result
Output:
bnn
Нащадок на Data.List
, тепер видалимо список символів:
import Data.List (delete)
-- Видалення множини символів
removeChars :: [Char] -> String -> String
removeChars [] str = str
removeChars (c:cs) str = removeChars cs (removeChar c str)
-- Де removeChar визначено як раніше
-- Використання функції
main :: IO ()
main = do
let result = removeChars "aeiou" "banana"
putStrLn result
Output:
bnn
Deep Dive | Поглиблений Аналіз:
У Haskell видалення символів за шаблоном не має вбудованої функції, як у деяких інших мовах. Замість цього пишемо свої функції, як removeChar
та removeChars
. Функціональна природа Haskell заохочує до складання менших функцій у більш складні. removeChar
і removeChars
використовують рекурсію – типовий підхід у Haskell для ітерації.
Альтернативи включають використання регулярних виразів з бібліотекою regex
або вбудовані функції високого рівня, як filter
(дія протилежна до видалення). Видалення за шаблном можна реалізувати і з більшою ефективністю, наприклад, використовуючи структури даних, оптимізовані для цього завдання, як перетворювачі рядків (string transformers).
See Also | Дивіться Також:
- Haskell.org Book – глибоке занурення у мову Haskell.
- Learn You a Haskell for Great Good! – доступний ресурс для вивчення Haskell.
- Hoogle – пошукова система для Haskell бібліотек.
- Stack Overflow – спільнота з відповідями на питання з програмування на Haskell.