표현 문제의 우아한 해결책: 다중 디스패치와 열린 메서드
이 글에서는 객체 지향 프로그래밍과 함수형 프로그래밍 모두에서 어려움을 겪는 '표현 문제'를 자세히 다룹니다. 기존 코드를 수정하지 않고 새로운 데이터 타입과 연산을 추가하는 방법에 대한 문제입니다. C++와 Haskell의 예시를 통해 저자는 문제의 핵심을 보여줍니다. 전통적인 객체 지향 프로그래밍에서는 타입과 연산을 동시에 확장하는 것이 어렵고, 함수형 프로그래밍도 비슷한 제약이 있습니다. 이 글에서는 비지터 패턴과 그 확장을 자세히 분석하고, 마지막으로 Clojure의 멀티메서드와 프로토콜을 사용하여 다중 디스패치와 열린 메서드가 표현 문제를 우아하게 해결하고 유연하고 확장 가능한 코드를 구현하는 방법을 보여줍니다.
더 보기