mingg IT

[함수형 프로그래밍] 2장 현실에서의 함수형 사고 본문

FrontEnd

[함수형 프로그래밍] 2장 현실에서의 함수형 사고

mingg123 2023. 9. 17. 20:46

현실에서의 함수형 사고

 

토니의 피자가게 예시

 

일급함수: 함수를 인자로 받는 함수 

 

액션

  • 호출 횟수와 시점에 의존 하는 것 
  • ex) 반죽 펴기, 피자 배달, 재료 주문

계산

  • 어떤 것을 결정하거나 계획하는 것
  • 계산은 아무 때나 사용해도 주방이 엉망진창이 될 걱정이 없음
  • ex) 조리법에 나온 것을 두배로 만들기, 쇼핑 목록 결정 

 

데이터

  • 변경 불가능한 데이터 
  • ex) 고객 주문, 영수증, 조리법 

 

계층형 설계

 

  • 상위로 갈 수록 자주 변경됨
  • 아래로 갈 수록 의존성이 많아 바꾸기 어렵고, 자주 바꾸지 않음 

 

 

일급 추상

 

  • 타임라인 다이어그램 
  • 로봇 한대가 피자를 만들기위해 진행되는 액션
  • 액션은 실행 시점에 의존하기 때문에 실행 순서가 중요함 

 

분산 시스템을 타임라인으로 시각화하기

 

  • 로봇 3대를 동시에 이용해서 피자를 만들면 더 빠를 것이다

문제는 반죽만들기나, 치즈 갈기가 제일 늦게 오게 되어서 반죽만들기가 도착하기 전에 반죽펴기가 실행될 수 있음 

 

 

타임라인 커팅 이용

 

커팅: 여러 타임라인이 동시에 진행될 때 서로 순서를 맞추는 방법 

 

 

 

타임라인 커팅을 이용했을 때의 장점

  • 서로 다른 작업들을 쉽게 이해할 수 있다 (타임라인을 실행 순서에 상관 없이 이해할 수 있음) 
  • 시간에 따라 진행하는 작업을 쉽게 이해할 수 있음 (동시에 실행되는 분산 시스템을 시각화 하기 좋음)
  • 타임라인 다이어그램은 유연함 (타임라인을 보고 쉽게 코드로 옮길 수 있음) 

 

요약

 

  • 함수형 프로그래밍에서 가장 중요한 것은 액션, 계산, 데이터를 구분하는 것임
  • 유지보수를 위해 계층형 설계를 사용해야함
  • 타임라인 다이어그램은 시간에 따라 변하는 액션을 시각화 하는 방법임
  • 타임라인 커팅은 액션이 올바른 순서로 실행할 수 있도록 보장해줌 

 

 

Comments