함수형 프로그래밍은 코드를 값으로 다루어 표현력을 높이는 방법을 배울 수 있습니다. `go` 함수: 인자에 들어있는 함수들을 차례대로 실행하여 하나의 값으로 만들어나가는 함수 `pipe` 함수: 여러 함수들을 합성하여 하나의 함수로 리턴해주는 함수 `curry` 함수: 값으로 다루면서 받아둔 함수를 원하는 시점에 평가시키는 함수 차례대로 공부해봅시다. 앞으로의 모든 코드들에는 `reduce` 함수가 있으니 `reduce` 함수에 대해 이해가 안되신 경우에는 제 이전 글을 보시면 감사하겠습니다. 1. go 함수 코드를 값으로 다룰 수 있기 때문에, 함수가 다른 함수를 인자로 받아 평가하는 시점을 원하는 대로 다룰 수 있습니다. 이를 통해 코드의 표현력을 높일 수 있습니다. `go` 함수는 인자들을 특정 함..
프로그래밍에서 요소들을 순회하면서 특정한 작업을 하는 경우는 매우 많습니다. 함수형 프로그래밍에서는 이러한 작업들을 좀 더 보기 쉽도록 해주는 함수들을 사용하여 요소들을 순회합니다. map, filter, reduce 함수란? 대표적인 예시가 `map`, `filter`, `reduce` 입니다. `map` 함수는 요소를 순회하면서 요소마다 작업을 하는 경우에 사용됩니다. `filter` 함수는 요소를 순회하면서 특정 조건을 만족하는 요소들만 필터링할 때 사용됩니다. `reduce` 함수는 요소를 순회하면서 내부적으로 특정 함수를 재귀적으로 호출하려는 경우에 사용됩니다. 이제 각각의 함수들을 만들어보도록 합시다. 1) map 함수 먼저 다음과 같이 순회할 수 있는 배열이 있습니다. type Product..
자바스크립트에서의 함수 이해하기 자바스크립트를 다루면서 객체지향적인 코드를 몇 번 짜봤으나 함수형 프로그래밍에 대해서는 깊이 생각하지 않았었던 것 같습니다. 때문에, 이를 공부하면서 생겼던 의문들을 해결하고자 글을 쓰게 되었습니다. 프로그래밍에서 평가는 코드가 계산(Evaluation)되어 값을 만드는 것입니다. JS를 사용해본 개발자라면 "JS에서의 함수는 일급 객체다"라는 말을 많이들 들어봤을 겁니다. 그렇다면 일급이란 무엇을 의미하는 걸까요? 일급이란 값으로 다룰 수 있고, 변수에 담을 수 있고, 함수의 인자로 사용될 수 있고, 함수의 결과로 사용될 수 있는 것을 의미합니다. 각각에 대한 예시를 살펴보도록 합시다. // 함수를 변수에 담을 수 있습니다. const add5 = a => a + 5; ..
액션과 계산, 데이터의 차이를 알기 장보기 과정을 통해서 액션과 계산, 데이터를 구분지어 봅시다. 일단 장보기 과정은 다음과 같이 리스트화할 수 있습니다. 냉장고 확인하기 운전해서 상점으로 가기 필요한 것 구입하기 운전해서 집으로 오기 하나씩 곱씹어보며 구분지어 보도록 하겠습니다. 냉장고 확인하기는 시점에 따라 냉장고를 확인하는 시점에 따라 냉장고에 있는 제품이 다르기 때문에 액션입니다. 이때, 냉장고에 있는 제품들은 데이터라고 할 수 있습니다. 운전해서 상점으로 가기는 몇 번 운전해서 상점으로 갔는지에 따라 소비된 연료량이 다릅니다. 즉, 외부에 영향을 주는 행동이므로 액션입니다. 이 때, 상점 위치나 가는 경로 자체는 데이터라고 볼 수 있습니다. 구입하는 것도 액션입니다. 브로콜리를 사려고 했는데, ..
Chapter 01 함수형 프로그래밍(FP)이란? 1. 수학 함수를 사용하고 부수 효과(Side effect)를 피하는 것이 특징인 프로그래밍 패러다임 2. 부수 효과없이 순수 함수만 사용하는 프로그래밍 스타일 부수 효과 함수가 리턴값 이외에 하는 모든 일을 말합니다. 대부분의 함수형 프로그래머는 부수효과를 가능한 사용하지 않으려고 합니다. 하지만 부수효과는 소프트웨어를 사용하는 근본적인 이유이므로 피해야만 하는 것은 아니죠. 프론트엔드 개발자가 자주 사용하는 `console.log()` 또한 부수효과 입니다. 순수함수 인자에만 의존하고 부수 효과가 없는 함수를 말합니다. 인자에만 의존한다 = 같은 인자를 넣으면 항상 같은 결과를 반환한다 실용적인 측면에서 함수형 프로그래밍 정의의 문제점 앞에서 언급했던..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.