洪民憙 (홍민희) 블로그

이하의 글은 2011년에 쓴 것입니다. 오래된 글인 만큼, 현재의 생각과 전혀 다른 내용도 많이 포함되어 있고, 당시와는 상황이 많이 달라진 점도 있습니다. 또한, 그 당시에 잘못 알려졌던 정보도 포함되어 있을 수 있습니다. 어찌됐든 저는 제 오래된 글이 회자되는 것을 저어합니다. 읽기에 앞서 양해를 부탁드립니다.

Python에서 + 연산자를 더하는 용도로도 쓰고 연결(concatenation)하는 용도로도 쓴다. 비단 Python만 그런 것이 아니라 Ruby나 Java도 비슷하다. 나는 이것이 잘못된 디자인 선택이라고 본다. 둘은 엄연히 다른 연산의 추상화이고, 맞는 방향은 Haskell처럼 둘을 나누는 것이다. (Haskell에서 연결은 ++ 연산자를 쓴다.)

tuple을 상속 받아 PointSize 타입을 만들면서 Point(1, 2) + Size(3, 4)Point(4, 6)을 반환하게 만들려는데 (1, 2) + (3, 4)(1, 2, 3, 4)를 반환하는 tuple의 시멘틱을 깨야하는 문제에 봉착해서 든 생각.