# curry

8개의 포스트

curry, curryr

function curry(fn) { return function (a, b) { return arguments.length == 2 ? fn(a, b) : function (b) { return fn(a, b); }; }; } function curryr(fn) { return function (a, b) { return arguments.length == 2 ? fn(a, b) : function (b) { return fn(b, a); }; }; } var add = curry(function (a, b) { return a + b; }); var sub = curry(functio

2023년 4월 24일
·
0개의 댓글
·
post-thumbnail

Curry & Partial Application

시작하기에 앞서 우연히 타입스크립트의 “튜플”에 관해 다루던 중 “Partial Appliacation”이란 개념이 등장하였고 모르고 넘어가면 섭섭하면서 동시에 찝찝하므로 다뤄보고자 한다. 해당 내용을 다루게 된 동기가 이상하긴 하지만 섭섭지 않게 배워보고자 한다. 여태껏 객체지향적인 프로그래밍과 사고속에서 코딩을 공부해와서 해당 “함수형 프로그래밍”이 굉장히 어색하게 느껴질테지만 천천히 알아보고자 한다. 함수형 프로그래밍 — Curry(커링) 커링(curry)은 프로그래밍 기법의 이름이다. 커링의 원리는 수학의 방정식에서 유래되었다. 자바스크립트로 만든 아래의 add함수를 보자. add는 x와 y를 받아서 두 변수의 합을 반환한다. 이를 수학적으로 표기하면 다음과 같다. 그리고 f(x,y)역시 아래와 같이 표기할 수도 있다. 여기서 h는 f를 다시 변환한 형태인데, 값을 하나 받아서 다른 값

2022년 9월 6일
·
0개의 댓글
·
post-thumbnail

💻 함수형 프로그래밍(go, pipe, curry)

함수형 프로그래밍에서 go, pipe, curry 모두 처음들어봤다. 매일매일 새로운 지식이 쏟아져 나온다.😭 이해가 잘 가지 않아서 한참을 실습해보았다. go, pipe, curry를 정리해보도록 하겠다! 📃 오늘 공부한 것 읽기 좋은 코드로 만들기! 함수형 프로그래밍은 함수를 값으로 다룰 수 있어서 코드를 가독성 좋게 작성할 수 있다. 중첩되어 있는 코드는 가동성이 많이 떨어지기 때문에 go, pipe, curry를 사용하여 표현력을 높여 가독성을 좋게 만들자! go go는 함수와 인자를 전달해서 즉시 어떤 값을 평가하는 함수이다. go의 첫번째 인자에는 시작하기 위한 값을 넣고 나머지 인자에는 함수들을 받아 다음 함수로 넘기면서 차례대로 실행하는 것이다. pipe 함수를 리턴하는 함수로, 함수들이 나열되어 있는 합성된 함수를 만든다. 파이프라인은 `각 요소의 출력이 다음 요소의 입력이 되도록 배열된 처리 요소의 체인으로

2022년 3월 29일
·
4개의 댓글
·
post-thumbnail

[TIL] 8월 11일

😁오늘 배운 내용 Currying? 커리? 커링? 카레냐? 함수형 프로그래밍 수업을 들으면서 go 함수와 pipe, reduce함수를 이해하느라 굉장히 애를 먹었는데, 그 과정에서 애를 먹었던 개념이 커링이라는 개념이다. 정말 세상에는 똑똑한 사람들이 많고, 인터넷에 자신들의 지식을 잘 정리해서 공유해주시는 분들이 많다. 이 분들이 작성한 글 덕분에 나도 커링에 대해 조금 알 것 같다. 커링을 이해하는데 아래 두 링크가 큰 도움을 주었다. 꼭 읽어보자! https://ko.javascript.info/currying-partials https://sujinlee.me/currying-in-functional-javascript/ 결국 커링은 n개의 인자를 받아야 하는 함수를 쪼개서 1개의 인자를 받는 n개의 함수로 쪼개는 것이다. 각각의 함수들은 다음에 실행할 함수를 리턴하고, 리턴된 함수는 다음 인자를 받아 실행되며 또 그 다음에 실행될 함수를 리턴하는 식으로

2021년 8월 13일
·
0개의 댓글
·
post-thumbnail

[TIL] day07. 고차함수와 go,pipe,curry

Intro 오늘 아침까지만해도 일정상으로는 강의 외에는 특별한 일정이 없었기 때문에 조금은 여유롭게 일정을 소화하고 저녁에는 휴식을 취할수 있을 줄 았았다. 고차함수를 배울때까지만 해도 그럴줄 알았다. 어제 배운 iterable protocol에서 특이한 문법(computed property name)과 iterable, iterator의 정확한 차이를 정확히 모른 상태로 넘어가서 그 내용들을 집고 넘어가느라 시간이 좀더 지체되긴 했지만 그래도 크게 영향은 없겠거니 했다. 근데... go, pipe, curry 라는 개념을 들어가면서 분위기가 사악 바뀌었다. 이해도 안가는게 구글링을 해봐도 같은 강사님한테 들은 분들의 블로그 포스팅 정도 보이고, MDN이나 개념서적 인덱스에도 안나오는 개념이었다. 반복적으로 듣고, 예시 코드를 쳐보면서 어느정도 이게 뭐구나 정도 알았는데, html파일에 script를 적용하는 예제에서 알수 없는 이유로 콘솔에 출력은 되는

2021년 8월 10일
·
0개의 댓글
·
post-thumbnail

[functional-js] 함수의 중첩, go, pipe, curry

이 글은 유인동님의 함수형 프로그래밍 강의내용을 정리한 글입니다. 서론 함수가 중첩되어있는 경우 가독성이 좋지않다. 함수형 프로그래밍에서는 함수를 값으로 활용한다. 함수를 값으로 다룬다면 함수의 표현력을 높일 수 있다. 함수들을 연속적으로 사용하는 함수, 함수들을 함축하는 함수를 구현하여 중첩된 함수의 가독성을 높여보자! go > 첫번째 인자에는 시작되는 값을 넣고 나머지 인자에는 함수들을 받아 값을 다음 함수로 넘기면서 차례대로 함수를 실행한다. 구현 go함수는 함수들을 차례로 실행하면서 하나의 결과로 축약하는 과정이기 때문에 reduce 함수를 활용하여 구현한다. 활용 값 0을 시작으로 다음 함수로 넘

2021년 2월 6일
·
0개의 댓글
·

curry

curry curry는 필요한 인자를 모두 채울 때까지 인자를 적용해 나가다가 모든 인자의 개수가 채워지면 함수의 본체를 실행하는 기법이다. 인자가 2개 들어오면 함수를 리턴하지 않고 즉시 실행하는 것으로 만들면? 이 코드는 둘다 결과를 리턴하기 때문에 삼항연산자로 만들면 코드가 더 간결 해진다. _curryr curry와 같은 동작이나 인자를 오른쪽에서 부터 적용해 나가는 함수

2020년 7월 28일
·
0개의 댓글
·

코드로 표현력 높이기(go, pipe, curry)

5.1 go 5.2 pipe 5.3 go 함수를 이용해 좋은 코드 만들기 curry 함수 > 코드는 html `` 에서 실습 했습니다. 솔직히 이해가...ㅠㅠ 5.1 go 코드를 값으로 다루어 표현력 높이기. 첫번째 인자값을 받고, 두번째부터 함수를 받아 순차적으로 연산한다. ex) go 라는 함수 만들기. 5.2 pipe pipe 는 go 함수와 다르게 함수를 리턴하는 함수이다. 합성된 함수를 만드는 것 이다. 5.3 go 함수를 이용해 좋은 코드 만들기 5.4 curry 함수 curry는 함수를 값으로 다루면서 받아둔 함수를 내가 원할때 평가 하는 함수. 함수를 받아서 함수를 리턴하고, 인자를 받아서 나중에 평가 시키는 함수. 함수에 인자를 하나씩 적용해 나가다가 함수의 본체를 실행하는 기법.

2020년 1월 20일
·
0개의 댓글
·