1장. 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다.
학습 목표
- 함수형 사고가 무엇인가
- 함수형 프로그래머가 코드를 바라보는 특별한 방법
Content
함수형 프로그래밍은 무엇인가요?
- 함수형 프로그래밍
- 수학 함수를 사용하고 부수 효과를 피하는 것이 특징인 프로그래밍 패러다임
- 부수 효과 없이 순수 함수만 사용하는 프로그래밍 스타일
액션과 계산, 데이터 구분하기
코드를 액션과 계산, 데이터로 구분하는 것은 함수형 프로그래밍의 핵심 개념이다.
- 액션 : 호출 시점과 횟수에 의존
- 계산 : 입력값을 계산해 출력하는 것 (→ 정확성을 위한 정적 분석, 테스트 전략 등에 쓰임)
- 데이터 : 이벤트에 대한 사실을 기록하는 것
-
간단 예제
/** 분리 전 */ {"firstname":'Eric',"lastname":'Normand'} sendEmail(to,from,subject,body) sum(numbers) saveUserDB(user) string_length(str) getCurrentTime() [1,10,2,45,3,98] /** 1. 호출하는 횟수나 시점이 중요한 함수 분리 (액션) */ 엑션: sendEmail(to,from,subject,body) saveUserDB(user) getCurrentTime() ---- {"firstname":'Eric',"lastname":'Normand'} sum(numbers) string_length(str) [1,10,2,45,3,98] /** 2. 실행 여부 분리 (계산) */ 엑션: sendEmail(to,from,subject,body) saveUserDB(user) getCurrentTime() ---- 계산: sum(numbers) string_length(str) ---- 데이터: {"firstname":'Eric',"lastname":'Normand'} [1,10,2,45,3,98]
-
업무 관리 서비스 예제
- 사용자가 작업 완료를 표시를 함 => 액션
- 클라이언트가 서버로 메시지를 보냄 => 액션 (메시지 자체는 데이터임)
- 서버가 메시지를 받음 => 액션
- 서버가 데이터베이스를 변경 => 액션
- 서버가 누구에게 알림을 보낼지 결정 => 계산
- 서버가 이메일로 알림을 보냄 => 액션