FrontEnd
[함수형 프로그래밍] 2장 현실에서의 함수형 사고
mingg123
2023. 9. 17. 20:46
현실에서의 함수형 사고
토니의 피자가게 예시
일급함수: 함수를 인자로 받는 함수
액션
- 호출 횟수와 시점에 의존 하는 것
- ex) 반죽 펴기, 피자 배달, 재료 주문
계산
- 어떤 것을 결정하거나 계획하는 것
- 계산은 아무 때나 사용해도 주방이 엉망진창이 될 걱정이 없음
- ex) 조리법에 나온 것을 두배로 만들기, 쇼핑 목록 결정
데이터
- 변경 불가능한 데이터
- ex) 고객 주문, 영수증, 조리법
계층형 설계
- 상위로 갈 수록 자주 변경됨
- 아래로 갈 수록 의존성이 많아 바꾸기 어렵고, 자주 바꾸지 않음
일급 추상
- 타임라인 다이어그램
- 로봇 한대가 피자를 만들기위해 진행되는 액션
- 액션은 실행 시점에 의존하기 때문에 실행 순서가 중요함
분산 시스템을 타임라인으로 시각화하기
- 로봇 3대를 동시에 이용해서 피자를 만들면 더 빠를 것이다
문제는 반죽만들기나, 치즈 갈기가 제일 늦게 오게 되어서 반죽만들기가 도착하기 전에 반죽펴기가 실행될 수 있음
타임라인 커팅 이용
커팅: 여러 타임라인이 동시에 진행될 때 서로 순서를 맞추는 방법
타임라인 커팅을 이용했을 때의 장점
- 서로 다른 작업들을 쉽게 이해할 수 있다 (타임라인을 실행 순서에 상관 없이 이해할 수 있음)
- 시간에 따라 진행하는 작업을 쉽게 이해할 수 있음 (동시에 실행되는 분산 시스템을 시각화 하기 좋음)
- 타임라인 다이어그램은 유연함 (타임라인을 보고 쉽게 코드로 옮길 수 있음)
요약
- 함수형 프로그래밍에서 가장 중요한 것은 액션, 계산, 데이터를 구분하는 것임
- 유지보수를 위해 계층형 설계를 사용해야함
- 타임라인 다이어그램은 시간에 따라 변하는 액션을 시각화 하는 방법임
- 타임라인 커팅은 액션이 올바른 순서로 실행할 수 있도록 보장해줌