_curryR 을 적용한 _map 혹은 _filter함수 질문입니다!!
451
25 asked
curryR을 활용해 등록한 map 함수나 _filter함수 동작에
const mapR = _curryR(_map);
console.log(
mapR(v => v.name)(arr) )
);
은 작동하는데 반해
console.log(
mapR(v => v.name, arr)
);
은 작동하지 않습니다...저는 조금 이해가 안가는게
arguments.length ===2 로 파라미터가 2개 들어올때
의 경우의 수 까지 처리 한것으로 알고 있는데 왜 밑에
부분은 작동하지 않는지...맞게 동작하는 것인지
궁금합니다....
만약 제가 놓치고 있는 부분이 있다면 알려주시면
감사드리겠습니다!
Answer 4
1
아 이 강의에서는 map 함수의 인자가 arr를 먼저 받도록 되어있고 curryR은 그 순서를 뒤집도록 되어있어서 그렇습니다 :)
0
말씀하신대로는 정상 작동 하는데 자꾸 질문 드려 죄송합니다 ㅠ
강의에서도 map 함수에 _curryr을 적용한 부분이 함수로 받은 인자를 먼저 받아 나중에 배열을 받아
함수를 유연하고 더 실용적인 함수로 사용할 수 있도록 _map = _curryr(_map); 이렇게 재 정의 한 뒤
위 말씀대로 먼저 받을 어레이를 뒤로 즉, 매핑함수를 먼저 받은 뒤 어레이를 받는 형식으로
제 코드 _mapR(v => v.name, arr); 요렇게 작동하는게 맞지 않은지요...ㅠ
_mapR(v => v.name)(arr); 요건 작동하고 바로위는 왜 작동 안하는지..제가 뭘 잘못 이해 하는지..
분명히 args.length === 2 ? fn(args[0], args[1]) : b => fn(b, args[0]); 을 통해
// CTO님 코드 return arguments.length === 2 ? fn(a, b) : function(b) return{ fn(b,a) };
mapR(v => v.name, arr)와 같이 인자가 한번에 두개가 들어 오더라도 동작할 수 있게 처리 했는데
왜 동작을 안하는 것인지.....이해가 가지 않네요...제가 뭔가 잘못 짚은 포인트가 있을까요ㅠㅠ
0
아 CTO님 제가 전체적인 부분을 못 본것 같네요??
arguments.length ===2 인 경우에는 파라미터의 위치를 바꾸지 않아서
(v => v.name, arr)인 경우는 작동하지 않는거죠?? 이게 제대로 이해 한게 맞는지 궁금합니다!
0
코드입니다! 참고로 _curryR의 주석의 코드도 동작하지
않습니다. ㅠ
// 사용한 어레이 입니다.
const arr = [
{
id: 1,
name: 'kim',
age: 32,
},
{
id: 2,
name: 'Kang',
age: 39,
},
{
id: 3,
name: 'Wong',
age: 24,
},
{
id: 4,
name: 'Cha',
age: 22,
},
{
id: 5,
name: 'Ku',
age: 30
},
{
id: 6,
name: 'Lee',
age: 29,
},
{
id: 7,
name: 'Choi',
age: 42,
},
{
id: 8,
name: 'Chul',
age: 29
}
];
// each 함수 입니다.
function _each(list, itter) {
for(let i = 0; i < list.length; i++) {
itter(list[i]);
}
return list;
};
//_map 함수 입니다.
function _map (list, mapper) {
const newArr = [];
_each(list, v => newArr.push(mapper(v)));
return newArr;
};
//_filter함수 입니다.
function _filter (list, fn) {
const newArr = [];
_each(list, v => fn(v) ? newArr.push(v) : null);
return newArr;
};
function _curryR (fn) {
return (...args) => args.length === 2 ? fn(args[0], args[1]) : (b) => fn(b, args[0]);
// return function(a, b) {
// return arguments.length == 2 ? fn(a, b) : function(b) { return fn(b, a); };
// }
};
const _mapR = _curryR(_map);
const _filterR = _curryR(_filter);
console.log(
_mapR(v => v.name)(arr), // 작동
_mapR(v => v.name, arr) // 타입에러
);
// TypeError: mapper is not a function 에러 내용 입니다.
0
동작해야할거 같은데 왜 안되는지는 잘 모르겠습니다 :)
사용하신 코드가 어떻게 될까요?
0
코드입니다! 참고로 _curryR의 주석의 코드도 동작하지
않습니다. ㅠ
// 사용한 어레이 입니다.
const arr = [
{
id: 1,
name: 'kim',
age: 32,
},
{
id: 2,
name: 'Kang',
age: 39,
},
{
id: 3,
name: 'Wong',
age: 24,
},
{
id: 4,
name: 'Cha',
age: 22,
},
{
id: 5,
name: 'Ku',
age: 30
},
{
id: 6,
name: 'Lee',
age: 29,
},
{
id: 7,
name: 'Choi',
age: 42,
},
{
id: 8,
name: 'Chul',
age: 29
}
];
// each 함수 입니다.
function _each(list, itter) {
for(let i = 0; i < list.length; i++) {
itter(list[i]);
}
return list;
};
//_map 함수 입니다.
function _map (list, mapper) {
const newArr = [];
_each(list, v => newArr.push(mapper(v)));
return newArr;
};
//_filter함수 입니다.
function _filter (list, fn) {
const newArr = [];
_each(list, v => fn(v) ? newArr.push(v) : null);
return newArr;
};
function _curryR (fn) {
return (...args) => args.length === 2 ? fn(args[0], args[1]) : (b) => fn(b, args[0]);
// return function(a, b) {
// return arguments.length == 2 ? fn(a, b) : function(b) { return fn(b, a); };
// }
};
const _mapR = _curryR(_map);
const _filterR = _curryR(_filter);
console.log(
_mapR(v => v.name)(arr), // 작동
_mapR(v => v.name, arr) // 타입에러
);
// TypeError: mapper is not a function 에러 내용 입니다.
FxTS를 이용한 함수형 프로그래밍에 대해 궁금한점이 있습니다.
1
292
1
안녕하세요. 유인동님 함수형 프로그래밍 2편을 구매했는데
0
351
2
_go함수 _pipe.apply(null, fns) 사용하는 이유
0
404
2
커리큘럼 관련 질문 입니다.
0
347
2
ES5 강의를 듣고 ES6 강의를 듣는게 좋을까요?
0
861
2
_get 함수 부분이 너무 이해가 안갑니다 ㅠ
0
656
2
거르기 함수 중 compact 질문드립니다.
0
475
1
강의 잘봤습니당
0
452
1
다형성 파트 _each함수 내부 코드 관련 질문
0
323
1
FP 함수 표준이 있는지 궁금합니다.
0
365
2
_reduce 질문 있습니다!
0
388
1
0:24 평가시점
0
254
2
10:18 아무래도 클로저가 리스프? 다 보니까
0
308
1
평가시점이 뭐에요? 16:30초 부터
0
367
1
강의자료
0
291
1
pipe 함수에 질문있습니다
0
283
1
대입문
0
343
1
Call을 사용하는 이유
0
287
1
좋은 강의 감사합니다.
0
274
1
순수함수에 대해서 질문있습니다.
0
426
1
13:40 _filter함수 질문
0
279
1
소스 내 변수형
0
225
1
Apply와 Call의 차이
0
227
1
reduce 에 function 인자에 대한 질문입니다.
0
207
1

