자바스크립트로 알아보는 함수형 프로그래밍

자바스크립트로 알아보는 함수형 프로그래밍

(90개의 수강평)

6481명의 수강생
무료
지식공유자 · 유인동
22회 수업 · 총 6시간 32분 수업
평생 무제한 시청
수료증 발급 강좌
수강 난이도 '초급'
hangyeong-ryu@naver.com 프로필

저자님이 쓰신 함수형 자바스크립트 프로그래밍 hangyeong-ryu@naver.com 16일 전

안녕하세요. 신입 UI 개발자입니다.

현재 개인적으로 저자님이 작성하신 책을 보면서 공부하고 있어요. 처음 읽을 때는 이게 무슨 소리인가,, 싶었지만 두번째 읽다보니 이제 코드가 이해가 되고 읽을때마다 새로운 사실을 알게 되어서 재미있습니다. 

문득 책을 읽으면서 궁금한점이 있습니다.

Q. 책이 작성된 시점은 3년전으로 알고 있고 현재 자바스크립트 개발 환경이 매우 많이 바뀐 것으로 알고 있습니다. 현재 상황에서 지속적으로 저자님이 작성하신 책을 읽는 것에 대해서 어떻게 생각하시나요?(다독 가능성 높음, 원래 같은 책을 여러번 읽는 편입니다.) 책의 내용이 나쁘다는 것이 아니라 3년전 책이라서 과거 지식을 배우고 있는게 아닐까? 라는 막연한 불안감이 있어서 질문드립니다.(책의 내용은 매우 좋으며 다양한 생각을 하게 만들어주는 매우 좋은 책이라고 생각합니다.) 물론 제 현재 근무환경에서는 ES5를 쓰고 있어서 활용할 가능성이 매우 높은 상황인 것은 맞습니다.

그리고 만들어주신 동영상 강의 중 하나를 현재 구매해서 듣고 있고 응용편도 구매해서 볼 예정입니다!

2
김상규 프로필

강의가 감동입니다.. 김상규 1달 전

강사님.
키보드 소리가 참 좋습니다.
어떤 제품을 쓰시는지 좀 알수 있을까요?
물론 강의는 더할나위 없구요..ㅋㅋ

1
전성준 프로필

ES6 화살표함수 사용시 curry 함수에서 arguments 사용 질문 전성준 2달 전

curry 함수에서 ES6의 경우 화살표 함수로는 arguments 사용이 안되는것 같은데요 이 경우는 arguments.length 체크를 다르게 해줘야하지 않을까싶습니다.

1
Un known 프로필

console.log가 부수효과를 일으키는점에 대해 궁금합니다 Un known 3달 전

2장 map,filter 초반부에 보면 console.log를 return 으로 바꾸면서 console.log도 부수효과를 가지기때문에

return으로 바꿔준다 하셨는데 어떠한 의미인지 이해가 잘 안됩니다. 

console.log로 값을 변경하거나 할순 없는거 같은데 단순히 함수를 호출했을때 console.log로 뿌려지는 값과

함수의 리턴값을 포함한 두개의 값이 콘솔창에 나와서 그렇게 말씀하신건가요?

1
줄렛(줄렛) 프로필

안녕하세요. 사용하시는 폰트좀 알 수 있을까요 줄렛(줄렛) 4달 전

영상 보는데 폰트가 괜찮아서 혹시나 알 수 있을까요?

 

1
캬우오우오 프로필

_each 다형성 질문입니다. 캬우오우오 4달 전

_each 다형성 부분을 듣고 해보는 중에, 자꾸 오류가 나서 질문드립니다. 변수 _length에 직접 배열을 넣으면 잘 동작하는데, _each에 적용하니 length 가 함수가 아니라고 오류가 뜹니다. 해결방법이 있을까요?

var _length = _get('length');
console.log(_length([1,2,3,4]));
// console.log(_each(null, console.log))

function _each(list, iter){
for(var i = 0, len = _length(list); i<len; i++){
iter(list[i])
}
return list;
}

2
Hae Jun Kim 프로필

강의내용에 대한 질문입니다. Hae Jun Kim 4달 전

자바스크립트 프로그래머가 되기 위해 자바스크립트를 배우면서 저자님의 함수형 프로그래밍을 알게되어 책 구매 후 동영상 수강중입니다.
현재 무료로 배포된 강의는 ES5버젼으로 알고 있는데, 수강해도 현재의 자바스크립트를 구현하는데 도움이 될까요?

1
kyoungwon Lim 프로필

함수형 자바스크립트가 처음이라서요.. kyoungwon Lim 5달 전

지금 쭈욱 강의듣고 있는데요, 많이 생소하고 좀 어렵게 느껴집니다..

어느정도 자바스크립트 문법 좀 알고있다고 생각하는데, 함수형자체가 많이 접해보지 않았던거라서 그런지 어렵게 느껴지네요...

취준생이라서, 자바스크립트 함수형을 잘 익히면 실무에서 효율적으로 일할 수 있을 거 같아서 포기하지 않고 끝까지 완강해보려고합니다.

지금은 이해가 안되더라도, 지금 강의 외에 선생님의 유료강의들도 들어보고 하면 이해되는 시점이 올까요?...

아니면 저한테 잘 안맞는 부분인건가요?... (혼자서 코딩해보라고하면 못할 거 같아요...ㅠㅠ)

아, 그리고 선생님 책 사서 보는게 좀 더 도움이 될까요??

2
아이티티티 프로필

17분쯤 질문드립니다. 아이티티티 5달 전

잘못된 접근을 했을때 에러를 뱉어내는게 더 좋은 방법 아닌가요?

런타임 전에 체크를 강하게 하는 방향으로 바뀌는 것 같던데,,

에러를 내지 않고 undefined를 내는 것의 장점이 무엇인지 궁금합니다.

1
madforre 프로필

인자명인 predicate에 대해서 질문드립니다. madforre 5달 전

안녕하세요 강사님 제가 헷갈리는 부분이 있는데요. 강의중에 함수의 인자 명으로 말씀하신 predicate 의 뜻에 대해 찾아봤는데 인자로 받은 함수가 불린 값을 리턴하는 것이라고 나오는거 같아서요.. 역할을 위임한다는 면에서 인자 이름이 delegate가 더 적당한게 아닌가 해서 여쭤봅니다.

6
송승윤 프로필

일급함수 - 함수에 인자를 함수로 넣을 때... 송승윤 6달 전

함수에 인자를 함수로 넣을 때 

var example1 = (function(){

return {

  }

})();

이 것도 함수에 인자를 함수로 넣은 것인가요??

 

 

1
Eun Shick Bae 프로필

혹시 글로 정리해서 공개로 올려놓아도 괜찮을까요? Eun Shick Bae 6달 전

좋은 강의 감사드립니다~!!

혹시 실례가 안된다면 출처와 함께 블로그에 공개글로 정리해서 올려두어도 괜찮을까요?

3
이이도경 프로필

grep function 만들기 오류 이이도경 6달 전

제가 jquery에 grep함수를 최대한 함수형 프로그래밍스럽게 바꾸고 있습니다.

제가 지금까지 시도한 결과는 아래와 같은데 이상하게 

```

my_grep([0,1,2,3], function(k){return k<3}, true)

```

이렇게 실행해보면   

```
evalmachine.<anonymous>:16 matches.push( elems[ p ] ); ^ TypeError: matches.push is not a function
```

이런 오류를 뱉어내는데, 이유를 도무지 모르겠습니다. 제 코드는 아래와 같습니다

```
function my_grep(elems, callback, invert) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; let fun = matches => { let r = R.range(0,length); let modify = R.curry( p=>{ let callbackInverse = !callback( elems[ p ], p ); if ( callbackInverse !== callbackExpect ) { matches.push( elems[ p ] ); } } ); R.map(modify,r); return matches; }; fun(length); }
```

원래 동작의 의도는 invert가 true면 callback인자의 조건이 false인 배열을 elems중에서 걸러내서 리턴하는 것 같습니다.

1
이이도경 프로필

jquery 함수들을 완전한 함수형 프로그래밍으로 바꾸려고 합니다. 이이도경 6달 전

jquery 함수들을 완전한 함수형 프로그래밍으로 바꾸려고 합니다.

for loop같은 것들도 모두 함수로 고쳐보고 싶은데 제가 바꾸려는 것이   

 

  each: function( obj, callback ) {

            var length, i = 0;

 

            if ( isArrayLike( obj ) ) {

                length = obj.length;

                for ( ; i < length; i++ ) {

                    if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {

                        break;

                    }

                }

            } else {

                for ( i in obj ) {

                    if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {

                        break;

                    }

                }

            }

 

            return obj;

        },

이 함수인데 제가 생각하기엔 

 

  each: function( obj, callback ){

length = obj.length;

let fisrt_if = R.curry( 

    i=> {

        R.range(0,length).some(function(i){

                    if ( callback.call( obj[ i ], i, obj[ i ] ) === false )

                        return i;

                    }

                );

    });

 

let first_else = R.curry(

    i=>{

          R.keys(obj).some(function(i){

                    if ( callback.call( obj[ i ], i, obj[ i ] ) === false )

                        return i;

                        }

                );

    }

);

 

let arraylike = obj =>{

    if ( isArrayLike( obj ) ) 

        return true;

    else

        return false;

}

let main = 

    R.ifElse(

    x=> arrayLike(obj),

        first_if,

        first_else

    )

}

 

밑에 함수가 그럴싸해보이는데 어디가 틀린건지 알 수 있을까요 ?ㅠㅠ

3
송이준 프로필

_curry 에서 질문 또 있어요 송이준 7달 전

function _curry(fn){

return function(a, b){

return arguments.length === 2 ? fn(a,b) : function(b){ return fn(a, b); };

}

}

var add = _curry(function (a, b){

return a + b;

});

var add10 = add(10);

console.log(add10); ---> function(b){ return fn(a,b); }

console.log(add10(5)); ---> 15

제가 이해가 안가는 부분은 _curry 함수에서 전달받는 매개변수가 두개가 아닌 경우에

항상 function(b){ return fn(a,b); } 가 실행되니까, a + b 라는 최종적으로 실행하게 될 연산에 대해 계속해서 b 라는 변수에만 값을 할당해주게 되는데, 어떻게 10 + 5라는 연산이 되는지 모르겠어요.

add(10)의 최종 결과는 a + 10이 되고 , 여기서 add(10)을 add10 이라는 변수에 담고 다시

add10(5)를 실행하게 되면....어떻게 되는건지 상상이 안되요.

3
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강좌들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스