요약
- 카테고리 이론의 핵심은 합성(composition)이며, 함수형 프로그래밍의 이론적 기반
본문
카테고리 이론은 프로그램을 합성 가능하도록 만들 수 있는 구조에 대해 다룸 함수형 프로그래밍에 대한 내용
카테고리의 본질은 합성
- A -> B가 있고 B -> C가 있으면 A -> C가 있어야함
함수는 일종의 Morphism: 사상
합성의 속성
-
결합 법칙
-
모든 대상 A에는 항등의 개념을 가진 화살표가 존재해야한다.
- 항등이 필요한 이유는 기호로 이루어진 변수를 다룰 때 유용, 0과 같은 용도임
-
합성은 프로그래밍의 본질
- 프로그래밍이란 무엇인가?
- divide and conquer
- 큰 문제를 여러 문제로 쪼갬, 충분히 작게 쪼개진 문제들을 해결함
- 이는 인간의 사고력의 한계를 갖고 있는것
- 청크의 면적은 청크의 부피보다 느리게 증가해야한다.
- 청크의 면적: 하나의 청크를 합성하는데 필요한 정보
- 부피: 청크를 구현하는데 필요한 정보
- 하나의 청크를 구현한 이후에는 구현의 세부 정보는 잊고 다른 청크와의 상호작용에만 집중해야함
- 객체도 마찬가지
- 프로그래밍이란 무엇인가?
타입과 함수
- 정적 타입, 동적 타입/ 강타입, 약타입
- 타입 체킹은 무의미하게 작성된 프로그램에 대한 하나의 방어막
- 합성에서, 한 화살표의 목표인 대상은 다음 화살표의 출발 대상과 동일해야함
- 정적 타입, 강타입에 대한 의미 있는 반대 의견
- 의미적으로 올바른 일부 프로그램이 배제 가능
- 타입 처리는 너무 많은 부담 타입은 컴파일러에서 충분히 결정할 수 있음
- 강력한 정적 타이핑은 코드를 테스트 하지 않는 핑계로 사용됨
- 유닛 테스트가 강타입 시스템을 대체 가능하다.
타입은 무엇인가?