본문 바로가기

Javascript/함수형 프로그래밍

(6)
커링 (curry, curryr, get) 커링 12345678910111213141516function _curry(fn){ return function(a){ return function(b){ return fn(a,b); } }}var add = _curry(function(a,b){ return a+b;}); var add10 = add(10);console.log( add10(5) ); //15console.log( add(5)(3) ); //8// 결국 원형함수를 계속 가지고 있다가 원하는 시점에 평가하는 스타일 원형 함수를 가지고 있다가 원하는 시점에 평가하는 함수 => curry 함수 1234567891011121314function _curry(fn){ return function(a,b){ return arguments.leng..
함수형 프로그래밍의 장점, 다형성!(어떤 객체에만 적용가능한 메서드가 아닌 함수를 생성한다) 다형성 1234567891011121314 console.log( [1,2,3,4].map(function(val){ return val * 2; }));// 2,4,6,8 출력console.log( [1,2,3,4].filter(function(val){ return val % 2; }));// 1,3 출력 Colored by Color Scripter 다형성에 대해 얘기하기전에 기존에 만들었던 _map 함수와 _filter 함수는 이미 만들어져있다.그래서 위와같이 사용이 가능하다.명확히는 함수가 아닌 메서드로 만들어져있다.무슨말이냐면 메서드는 어떤 객체, 여기서는 배열의 메서드라서 배열객체가 생성된 후에 그 배열객체에'만' 적용가능한 함수인 것이다.12345console.log( document.qu..
each 메서드 만들어보기 each지난번 _map 함수와 _filter 함수에도 똑같이 중복되는 부분이 있었다.중복제거를 하는 each함수를 만들어본다.12345678910111213141516function _filter(list,predi){ var new_list = []; for(var i=0;i< list.length;i++){ if(predi(list[i])){ new_list.push(list[i]); } }}function _map(list, mapper){ var new_list = []; for(var i = 0; i
함수형 프로그래밍으로 map, filter를 만들어보자(함수를 인자로 쓰기) 함수형으로 전환하기123456789101112131415161718192021222324252627282930313233343536373839var users = [ {id:1,name:'ID',age:36}, {id:2,name:'BJ',age:32}, {id:3,name:'JM',age:32}, {id:4,name:'PJ',age:27}, {id:5,name:'HA',age:25}, {id:6,name:'JE',age:26}, {id:7,name:'JI',age:31}, {id:8,name:'MP',age:23}];// 명령형 코드// 1. 30세 이상인 users를 거른다.var temp_users = [];for (var i=0; users.length; i++){ if(users[i].age >..
일급 함수란? (함수를 객체처럼 다룬다, 일급 객체(first-class)) 일급 함수 일급 함수 : 프로그래밍 언어에서 함수를 값으로 다룰 수 있는 것 (함수 스스로 객체취급)즉, 함수를 변수에 담아 원할 때 평가(함수 호출)하는 것따라서 변수의 특성인 함수 인자로 전달 가능하며, 리턴 값으로 사용 가능( 나중에 상세한 정의 찾아보기 )1234var f1 = function(a){return a*a;};console.log(f1); // 함수의 내용이 나옴, 즉 변수f1에 함수가 담겼다var f2 = add; //add라는 메서드가 있을 때console.log(f2); 자바스크립트에서 f1이라는 변수에 함수를 대입할 수 있다. (여기서 보이진 않지만 add라는 함수를 만들었다.) 12345function f3(f){ return f();}//단순히 함수를 실행시키는 함수f3(f..
순수 함수란? (함수형 프로그래밍의 뿌리, 함수의 부수효과를 없앤다) 함수형 프로그래밍 함수형 프로그래밍 : 부수 효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이는 프로그래밍 패러다임* 부수 효과 = 외부의 상태를 변경하는 것 또는 함수로 들어온 인자의 상태를 직접 변경하는 것* 순수 함수 = 부수효과가 없는 함수 즉, 어떤 함수에 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수 + 외부의 상태를 변경하지 않는 함수순수 함수와 순수함수가 아닌것 1234function add(a,b){ return a + b;}console.log( add(10,5) ); add는 순수함수다.언제, 어디서 실행해도 add(10,5)는 항상 15를 리턴하고 외부 상태를 변경하지 않았기 때문 123456789var c = 10;function add2(a,b){ return a +..