본문 바로가기

분류 전체보기

(664)
15. Javascript 함수형 프로그래밍 적용(2) - bind bind 함수에 대해서도 한번 살펴보겠습니다. bind 함수는 기본적으로 curry와 그 용도가 비슷한 함수입니다. 고정하고자 하는 인자 값을 bind 호출 시 넘겨주고, 거기서 클로저로 반환받은 함수를 호출하면서 사용자가 나머지 가변 인자를 지정할 수 있는 방식을 지원합니다. curry와 다른 점은, 함수 호출 시 this에 바인딩할 객체를 직접 지정할 수 있다는 점이죠. curry를 충분히 대체하는 함수입니다. Function.prototype.bind = function(thisArg) { var fn = this; var slice = Array.prototype.slice; var args = slice.call(arguments, 1); // bind의 파라미터 값 중 인덱스 1번 부터 전부 ..
15. Javascript 함수형 프로그래밍 적용(1) - 필수 선행지식 + 커링(curry) 3 앞서 구현해 본 커링의 경우, Javascript에서는 기본적으로 제공되는 메서드는 아닙니다. 그래서 프로토타입 함수로 정의하여 사용하는 것이 일반적입니다. 앞서 calculate 함수 사례를 프로토타입 메서드로 정의해 실행해 보도록 하겠습니다. function calculate(a, b, c) { return a * b + c; } Function.prototype.curry = function() { var fn = this; var args = Array.prototype.slice.call(arguments); console.dir(args); return function() { return fn.apply(this, args.concat(Array.prototype.slice.call(argum..
"주가가 상승하는 추세를 보이고 있다" 영어로 표현해 봅시다 오늘 배워볼 표현은 주식이나 부동산 가격, 금리, 혹은 어떤 기업의 매출이나 이익 성장세 또는 하락세를 이야기할 때 많이 사용되는 문장입니다. 당연히 이러한 수치에 대해 이야기할 때는 "오르다" 혹은 "내려가다" 정도의 표현이 대부분 사용되곤 합니다. 그래서 이런 경우에는 사실 을 나열하는 수준에서 increase 또는 decrease, up 또는 down 을 사용하여 이러한 상황을 표현하곤 합니다. "매출이 작년보다 떨어졌어요." 영어로 표현해 봅시다. 프레젠테이션이나 각종 보고에서 기본적인 지표에 대해서 설명할 때 가장 많이쓰게 되는 표현은 아마 매출(또는 기타 지표)이 떨어지거나 올랐다는 표현일 것 같습니다. 이는 자료에 대한 해석 nozeroslope.tistory.com 그런데 오늘 살펴볼 표현..
15. Javascript 함수형 프로그래밍 적용(1) - 필수 선행지식 + 커링(curry) 2 앞서 살펴본 커링 구현 예제를 계속 살펴보도록 하겠습니다. 15. Javascript 함수형 프로그래밍 적용(1) - 필수 선행지식 + 커링(curry) 1 앞서 살펴본 함수형 프로그래밍 기법을 통해, 현재 통용되는 몇 가지 함수를 재구현하거나 구조를 응용해 보도록 하겠습니다. 우선, 이 과정을 위해서는 몇 가지 잊어서는 안 되는 선행 지식들 nozeroslope.tistory.com function calculate(a, b, c) { return a * b + c; } function curry(func) { var args = Array.prototype.slice.call(arguments, 1); console.dir(args); return function() { return func.appl..
"공돈이 좀 생겼어"를 영어로 표현해 봅시다 살다 보면, 기본적인 월급이나 부수입 같이 정기적으로 벌어들이는 수입 이외에도 기대하지 않았던, 예상에 없던 수익이나 돈이 생기기 마련입니다. 이때 우리가 주로 '공돈이 생겼다'라고 표현하게 됩니다. 그런데, 막상 이런 뉘앙스로 표현한 문장을 영어로 바꿔 보려고 하면 선뜻 생각나는 표현이 없습니다. 우리는 이미 알고 있지만 이런 경우 100% 콩글리시가 튀어나오기 마련 입니다. 오늘은, 이러한 표현을 영어로 어떻게 말할 수 있을지에 대해서 알아보도록 하겠습니다. 우선 단순하게 생각해 봅시다. 한국어 로 "공돈"이라는 단어가 있으면 영어로 뭐라고 표현하게 될까요? 그리고 "공돈이 좀 생겼다."를 어떻게 표현하게 될까요? 한 번 편하게 생각해 봅시다. 혹시, 'free money'정도가 떠오르지 않으세요? ..
15. Javascript 함수형 프로그래밍 적용(1) - 필수 선행지식 + 커링(curry) 1 앞서 살펴본 함수형 프로그래밍 기법을 통해, 현재 통용되는 몇 가지 함수를 재구현하거나 구조를 응용해 보도록 하겠습니다. 우선, 이 과정을 위해서는 몇 가지 잊어서는 안 되는 선행 지식들이 있는데, 커링을 구현하면서 차례로 같이 살펴보도록 하겠습니다. 우선 '커링'을 먼저 정의해 보겠습니다. 커링은 "특정 함수에서 정의-선언된 파라미터의 값 일부를 고정하고, 나머지 파라미터에 전달된 인자로 받는 함수를 생성하는 것"을 의미합니다. 우선 예제 코드를 먼저 살펴보고, 여기에 필요한 몇 가지 선행지식에 대한 설명부터 진행하겠습니다. (물론, 다 알고 있어야 하는 내용이지만 해당 내용을 정리하는 제가 머리가 나빠서 다 잊어버렸더라구요...ㅠ) function calculate(a, b, c) { return a..
14. Javascript 함수형 프로그래밍(5) - 피보나치 수열 구현하기 앞서 살펴본 팩토리얼 구현 방식을 응용해, 이번엔 피보나치 수열을 함수형 프로그래밍으로 구현해보도록 하겠습니다. var fibo = function() { var cache = {'0' : 0, '1' : 1}; var func = function(n) { var result = 0; if (typeof(cache[n]) === 'number') { result = cache[n]; } else { result = cache[n] = func(n-1) + func(n-2); } return result; } return func; }(); console.log(fibo(10)); 유사한 방식으로 코드를 구현했습니다. 역시 cache에 캐시 값을 저장해, 수열 연산을 구현하는 즉시 실행 함수 형태와 클로저..
14. Javascript 함수형 프로그래밍(4) - 팩토리얼 구현하기 이번에는 팩토리얼을 함수형 프로그래밍을 통해 구현하는 방법을 살펴보도록 하겠습니다. 우선은, 우리가 익히 알고 있는 명령형 프로그래밍 방식으로 함수 factorial을 구현해 보겠습니다. function factorial(num) { var val = 1; for(var i = 1; i