패턴에 일치하는 문자 삭제

Haskell:
패턴에 일치하는 문자 삭제

실행 방법:

import Data.List (intercalate)
import Text.Regex.Posix ((=~))

-- 패턴에 맞는 문자 삭제
deletePattern :: String -> String -> String
deletePattern pat str = intercalate "" (str =~ pat :: [String])

main :: IO ()
main = do
    let str = "안녕하세요, Haskell!"
    let pattern = "[^가-힣]" -- 한글이 아닌 모든 문자에 대한 패턴
    let result = deletePattern pattern str
    putStrLn result -- "안녕하세요"

깊은 이해:

  • 역사적 맥락: 문자열 처리는 컴퓨터 프로그래밍의 근간 중 하나로, 초기 프로그래밍 언어부터 현대 언어에 이르기까지 발전해왔습니다. Haskell과 같은 함수형 언어는 이러한 문자열 처리 작업을 불변성과 함수 조합으로 처리합니다.
  • 대안: Data.Text 모듈을 사용하는 것도 한 방법입니다. Text 타입은 문자열을 더 효율적으로 다룹니다. 또한, 직접 정규 표현식 대신 filter 함수와 같은 리스트 고차 함수를 사용해서 특정 조건을 만족하는 문자만 유지하는 방법도 있습니다.
  • 구현 세부사항: 패턴 매칭은 정규 표현식을 기반으로 수행됩니다. Haskell에서는 Text.Regex.Posix 모듈을 이용해 POSIX 호환 정규 표현식을 적용할 수 있습니다. 이 예제에서는 =~ 연산자를 사용해 문자열을 패턴에 매칭되지 않는 부분들로 나누고, 이를 다시 결합하여 목표 문자열을 얻었습니다.

참고자료: