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의 시멘틱을 깨야하는 문제에 봉착해서 든 생각.

2년 전
  1. hongminhee님이 포스팅했습니다.