목록BOOKS/Grokking simplicity 함수형 코딩 (4)
\(@^0^@)/
액션과 계산, 데이터 구분하기 절차적인 방법으로 구현한 쇼핑몰 페이지의 코드를 함수형으로 리팩터링 하기 위해서 액션, 계산, 데이터로 구분해보자. 액션은 코드 전체로 퍼진다. 어떤 함수 안에 액션이 하나만 있어도 그 함수 전체가 액션이 된다. 함수에는 입력과 출력이 있다 정보는 입력을 통해 함수 안으로 들어간다. 정보나 어떤 효과는 출력으로 함수 밖으로 나온다. 입력과 출력은 명시적이거나 암묵적일 수도 있다. 인자는 명시적인 입력이다. 리턴 값은 명시적인 출력이다. 하지만 암묵적으로 함수로 들어가거나 나오는 정보도 있다. let total = 0; function add_to_total(amount) { // 인자는 명시적 입력 console.log("합계 :" + total); // 전역변수를 읽는 것..
액션과 계산, 데이터의 차이를 알기 챕터 1부터 계속 말하고 있지만, 다시 한번 정리해보자. 액션 실행 시점과 횟수에 의존한다. 다른 말로 부수 효과(side-effects), 부수 효과가 있는 함수(side-effecting function), 순수하지 않은 함수(impure function)라고 부르기도 한다. ex) 이메일 보내기, 데이터 베이스 읽기 계산 입력으로 출력을 계산한다. 다른 말로 순수 함수(pure function), 수학 함수(mathematical function)라고 부르기도 한다. 계산은 계산을 호출하는 코드를 계산 결과로 바꿀 수 있기 때문에 참조 투명(referentially transparent)한다. ex) 최댓값 찾기, 이메일 주소가 올바른지 확인하기 데이터 이벤트에 ..
챕터 2 - 현실에서의 함수형 사고 피자를 만드는 함수형 사고를 사용한 로봇을 예로 들어서 1. 함수형 사고 기술인 액션과 계산, 데이터 각 분류에 해당하는 예를 살펴보고 코드에 적용한 계층형 설계(stratufued design) 원칙과 2. 일급 추상의 분산 시스템을 이해하기 위한 타임라인 다이어그램(timeline diagram)에 대해 살펴보자. 1. 액션 액션은 호출 횟수와 시점에 의존하는 것. 오븐이나 배달차 같은 자원과 요리 재료를 사용하는 것은 액션. ex) 반죽 펴기, 피자 배달, 재료 주문 2. 계산 어떤 것을 결정하거나 계획하는 것은 계산. 계산은 실행해도 다른 곳에 영향을 주지 않음. 따라서 계산은 아무 때나 사용해도 됨. ex) 조리법에 나온 것을 두 배로 만들기, 쇼핑 목록 결정..
많은 함수형 프로그래밍 자료에서 함수형 프로그래밍은 부수 효과가 없는 순수한 함수로 프로그래밍을 해야 한다고 말한다. 함수형 프로그래밍을 하려면 부수 효과를 처리하는 방법을 알아야 한다. 부수 효과를 처리한다는 말은, 없앨 수 있는 부수 효과는 없애고 필요한 부수 효과는 잘 두는 것을 의미한다. 함수형 프로그래밍의 핵심 개념 계산과 액션을 구분하는 것 계산은 외부에 어떤 영향을 주지 않기 때문에 여러 번 실행해도 같은 결과를 돌려준다. 하지만 액션은 부수 효과를 가지고 있다. 화면에 글씨를 표시하거나 로켓을 발사하는 것과 같은 액션은 실행할 때마다 다른 결과가 나올 수 있다. 코드에 어떤 부분에 부수 효과가 있고 어떤 부분이 '순수한 계산' 인지 쉽게 구분할 수 있는 패턴으로 구성하면 프로그램을 쉽게 이..