https://product.kyobobook.co.kr/detail/S000210397750
타입이라는 주제로 정말 많은 이야기를 할 수 있다는 점이 재미있었습니다.
제네릭, 가변성 부분은 개발하면서 활용에 필요한 기능이지만
잘 쓰기위해서는 언어의 이해가 필요합니다.
책에서는 타입을 설명하면서 이런 부분들을 이해하는 것을 돕고 있습니다.
메모
pg. 11
정적 타입 언어: 프로그램을 실행하기 전에 타입이 올바르게 사용되었는지 확인하는 언어.
pg. 16
타입 검사: 작은 부분의 정보를 알아내고, 큰 부분을 구성하면서 작은 부분이 올바른지 검사 반복.
pg. 60
타입 검사기가 거부할때 해결하는 방법, 1. 다형성, 2. 무시하기
pg. 84
구조에 의한 서브타입. 클래스내에 어떤 필드와 메서드가 있는지를 고려.
pg. 106
최대타입: 모든 값을 포함(any)
최소타입: 어떤 값도 속하지 않는다.(nothing)
계산을 끝내지 못함.
pg. 140
함수타입은 매개변수 타입의 서브타입 관계를 뒤집음.
pg.152
제네릭스: 매개변수를 통한 다형성
pg.169
힌들리-밀너 타입 추론: 정의할때부터 타입 추론
pg.274
List1<T> 출력=> 공변
List2<T> 출력, 입력 => 무공변
int => T 출력 => 공변
T => T 입력 => 반공변
pg.312
함수선택방법
pg.323
메서드 선택 방법
pg.342
타입 클래스: 특정 타입을 위한 어떤 함수가 포함된다는 것을 표현.
인터페이스와 typeclass 차이. 인터페이스의 경우는 구체적인 타입이 필요하다.
pg.362
카인드: 타입의 타입. 예를 들어 List<Int>같은 경우, List는 타입이지만 추가적인 타입을 나타내어야한다.