1장. 쏙쏙 들어오는 함수형 코딩에 오신 것을 환영합니다.

학습 목표

  • 함수형 사고가 무엇인가
  • 함수형 프로그래머가 코드를 바라보는 특별한 방법

Content

함수형 프로그래밍은 무엇인가요?

  • 함수형 프로그래밍
    1. 수학 함수를 사용하고 부수 효과를 피하는 것이 특징인 프로그래밍 패러다임
    2. 부수 효과 없이 순수 함수만 사용하는 프로그래밍 스타일

액션과 계산, 데이터 구분하기

코드를 액션과 계산, 데이터로 구분하는 것은 함수형 프로그래밍의 핵심 개념이다.

  1. 액션 : 호출 시점과 횟수에 의존
  2. 계산 : 입력값을 계산해 출력하는 것 (→ 정확성을 위한 정적 분석, 테스트 전략 등에 쓰임)
  3. 데이터 : 이벤트에 대한 사실을 기록하는 것
  • 간단 예제

    /** 분리 전 */
    {"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]
  • 업무 관리 서비스 예제

    1. 사용자가 작업 완료를 표시를 함 => 액션
    2. 클라이언트가 서버로 메시지를 보냄 => 액션 (메시지 자체는 데이터임)
    3. 서버가 메시지를 받음 => 액션
    4. 서버가 데이터베이스를 변경 => 액션
    5. 서버가 누구에게 알림을 보낼지 결정 => 계산
    6. 서버가 이메일로 알림을 보냄 => 액션