go 함수 실행
go(users,
filter(function(user) { return user.age <= 30; }),
map(get('name')),
console.log);
filter 과정
filter(function(user) {return user.age <=30;})
1.
['인자 값']
pipe.apply(null,fns)(arg)
2.
['인자 값']
reduce(fns, function(arg, fn){return fn(arg);}, arg);
3.
['인자 값']
each(list, function(val) {memo = iter(memo, val);});
4.
['인자 값']
keys(list);
5.
['인자 값']
6.
['인자 값']
iter(list[keyss[i]], keyss[i]);
iter(list[keyss[i]], keyss[i]);
iter(function(b){return fn(b,a), 0});
iter(function(b){return fn(b,a), 1});
iter(console.log, 2);
7.
['인자 값']
each(list, function(val) {memo = iter(memo, val);});
each([filter, map, console.log], users = iter(users,function(b){return fn(b,a);}))
iter(users, function(b){return fn(b,a);})
8.
['인자 값']
reduce(fns, function(arg, fn){return fn(arg);}, arg);
fn(users, function(user) {return user.age <=30;})
filter(users, function(user){return user.age <=30;})
var filter = curryr(function(list, predi) {
var new_list = [];
each(list, function(val) {
if (predi(val)) new_list.push(val);
});
return new_list;
});
new_list = [
{id : 1, name : 'JM', age : 29},
{id : 2, name : 'MJ', age : 28},
{id : 3, name : 'SB', age : 25},
{id : 4, name : 'YH', age : 27},
{id : 5, name : 'SH', age : 26}]
9.
['인자 값']
each(list, function(val) {memo = iter(memo, val);});
each([filter, map, console.log], users = iter(users,function(b){return fn(b,a);}))
iter(users, function(b){return fn(b,a);})
memo = [
{id : 1, name : 'JM', age : 29},
{id : 2, name : 'MJ', age : 28},
{id : 3, name : 'SB', age : 25},
{id : 4, name : 'YH', age : 27},
{id : 5, name : 'SH', age : 26}]
map 과정
map(get('name'))
7.
['인자 값']
each(list, function(val){memo = iter(memo, val)});
memo = [
{id : 1, name : 'JM', age : 29},
{id : 2, name : 'MJ', age : 28},
{id : 3, name : 'SB', age : 25},
{id : 4, name : 'YH', age : 27},
{id : 5, name : 'SH', age : 26}]
each(list, memo = iter(memo, function(b){return fn(b,function(b){return fn(b,a)})}))
iter(memo, function(b){return fn(b,function(b){return fn(b,a)})})
8.
['인자 값']
---> function(memo){return fn(memo,function(b){return fn(b,a)})}
map(memo,function(b){return fn(b,a)})
var map = curryr(function(list, mapper) {
var new_list = [];
each(list, function(val, key) {
new_list.push(mapper(val, key));
});
return new_list;
});
list = [
{id : 1, name : 'JM', age : 29},
{id : 2, name : 'MJ', age : 28},
{id : 3, name : 'SB', age : 25},
{id : 4, name : 'YH', age : 27},
{id : 5, name : 'SH', age : 26}]
function(list[keyss[i]], keys[i]) {new_list.push(mapper(list[keyss[i]], keys[i]))}
new_list.push(mapper({id : 1, name : 'JM', age : 29}, 0))
new_list.push(mapper({id : 2, name : 'MJ', age : 28}, 1))
new_list.push(mapper({id : 3, name : 'SB', age : 25}, 2))
new_list.push(mapper({id : 4, name : 'YH', age : 27}, 3))
new_list.push(mapper({id : 5, name : 'SH', age : 26}, 4))
function({id : 1, name : 'JM', age : 29}) {return fn({id : 1, name : 'JM', age : 29},a)}
get({id : 1, name : 'JM', age : 29},'name')
get({id : 2, name : 'MJ', age : 28},'name')
get({id : 3, name : 'SB', age : 25},'name')
get({id : 4, name : 'YH', age : 27},'name')
get({id : 5, name : 'SH', age : 26},'name')
new_list.push('JM')
new_list.push('MJ')
new_list.push('SB')
new_list.push('YH')
new_list.push('SH')
new_list = ['JM',"MJ",'SB','YH','SH']
console.log() 과정
console.log
var reduce = function(list, iter, memo) {
if(arguments.length == 2) {
memo = list[0];
list = rest(list);
}
each(list, function(val) {
memo = iter(memo, val);
});
return memo;
}
memo = ['JM',"MJ",'SB','YH','SH']
val = console.log
console.log(memo) 실행
memo = console.log(memo)