[Julia] 제너릭 타입
줄리아는 구조체에 대한 제너릭을 제공한다.
구조체의 필드 타입에 구멍을 뚫어놓고 사용 시에 구체화해 채워놓을 수 있다는 말이다.
여러 타입이 다형적으로 들어갈 수 있는 구조를 만들 때 아주 유용하다.
배열 등의 컬렉션 타입이나, 모나드 등등
제너릭 구조체는 기존의 구조체 정의에서 중괄호 열고 타입인자만 써주면 완성된다.
그리고 구체화할 때도 타입명 오른쪽에 중괄호 열고 구체화할 타입을 순서대로 써주면 된다.
아래는 단순한 제너릭 래퍼 타입인 Wrap을 정의한 예다.
이런 식으로 쓰면 된다.
공변성
보자. 원래 항상 하위타입은 동시에 상위타입으로도 취급된다.
그래서 상위타입으로 지정된 인자나 변수라도 항상 하위타입의 값을 전달할 수가 있다.
하지만 제너릭이 개입되면 이게 약간 무너진다.
만약 이렇게 타입 관계가 이어져있더라도

다른 제너릭 타입의 인자로 들어간 경우엔 타입의 상하관계가 깨지고 만다.


하지만 상위타입을 표시할 때 앞에 <:를 붙이면 공변성이 적용된다.
기대하던대로 동작한다는 것이다.
그럼 이번엔 오류 없이 잘 동작할 것이다.
