Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 엄티로드
- 영화감상
- graphQL
- nodejs
- 개발자
- Node
- 영화리뷰
- 자바스크립트
- git
- 파이썬
- 솔로드릴
- 개발
- 주짓떼라
- development
- 노드
- 웹개발
- Express
- 하프가드
- 클로즈가드
- 영화
- web
- 프로그래밍
- 주짓수
- JavaScript
- 드릴
- REACT
- Redux
- 주짓떼로
- 디자인패턴
- 리액트
Archives
- Today
- Total
As i wish
[JavaScript] Curry, Partial 차이 본문
함수형 프로그래밍에 대하여 접하면 대부분 사람들은 처음 배우는것이고 용어들도 많이 헷갈려한다.
저 또한 많이 헷갈렸는 데 그 중 Curry (커링), Partial (부분 적용?) 이 상당히 헷갈렸다.
그래서 잘 정리된 글 두개를 가져왔는데 하나는 영문이고 하나는 국문이다.
Javascript - Currying VS Partial Application
함수형 프로그래밍 - Curry 와 Partial Application
두개의 내용은 비슷하나 내가 정리한 바로는
Curry
- 하나의 인자만 받을 수 있는 함수를 계속 반환 한다.
- 모든 인자를 다 받을 때 까지 계속해서 함수를 반환한다.
- 계속해서 origin 한 함수를 반환한다.
Partial Application
- 반환하는 함수가 꼭 한개의 인자를 받는 함수는 아니다.
- 반환된 함수를 부를 때에는 결과값을 반환해야한다.
- 반환된 함수는 origin한 함수랑 다르다.
공통점
- 인자를 미리 정해 놓을 수 있다.
인자를 미리 정해놓을 수 있는 점은 상당히 메리트가 있다고 생각합니다. 예를 들어 통신을 할 때에 통신을 하는 함수가 모두 ajax 모듈을 사용한다고 가정하면 통신을 하는 함수를 partial 해서 ajax 모듈을 넣어주고 컴포넌트 단에서 부를 때에는 경로만 부르면 더 간단한 함수가 될 수 있기 때문이죠.
// 기존
const transform1 = (transformer, url) => {
return transformer.get(url);
}
const transform2 = (transformer, url) => {
return transformer.get(url);
}
const transform3 = (transformer, url) => {
return transformer.get(url);
}
const res1 = transform1(ajax, '/user-info');
const res2 = transform2(ajax, '/posts');
const res3 = transform3(ajax, '/comments');
// partial Application 적용
const transform = (transformer, url) => {
return transformer.get(url);
}
const transformPartial = partial(transform, ajax);
const res1 = transformPartial('/user-info');
const res2 = transformPartial('/posts');
const res3 = transformPartial('/comments');
조금 더 선언적 프로그래밍이 된 느낌입니다. transform 이라는 함수는 transformer 와 url을 받아서 get만 하는 역할을 선언하고 밑에서 partial을 이용하여 새로운 함수를 반환하였고 그 다음 반환된 함수를 사용하고 있습니다.
처음 프로그램이 실행 될 때 위와 같이 transformPartial이라는 함수를 만들고 컴포넌트 단에서는 transformPartial 함수 만 사용하면 조금 더 편하게 프로그램을 작성 할 수 있을 것 같네요.
'JavaScript' 카테고리의 다른 글
[JavaScript] for...in, for...of 차이 (0) | 2020.03.03 |
---|---|
[JavaScript] 무한 스크롤링 사용 (0) | 2020.03.01 |
[JS] Clean Code (퍼옴 글) (0) | 2020.02.05 |
[JavaScript] Sort 오름차순, 내림차순 (0) | 2020.01.21 |
[Javascript] localStorage 객체 저장하기 (3) | 2019.12.15 |
Comments