표현 문제: 객체 지향과 함수형 프로그래밍에서의 우아한 해결책
2025-09-07
이 글에서는 소프트웨어 설계에서의 "표현 문제"를 자세히 다룹니다. 기존 코드를 수정하지 않고 새로운 데이터 타입과 연산을 추가하는 방법에 대해 논의합니다. C++과 Haskell 예제를 사용하여 객체 지향 프로그래밍과 함수형 프로그래밍에서 이 문제의 한계를 보여주고, 비지터 패턴, Clojure의 멀티 메소드와 프로토콜을 사용한 우아한 해결책을 탐구합니다. Clojure의 접근 방식은 오픈 메소드의 강력한 기능을 활용하여 메소드 정의와 타입 정의를 분리함으로써 기존 코드를 변경하지 않고 유연한 확장을 가능하게 합니다.
개발
표현 문제