javascript - 함수형 프로그래밍(2) 작성중

김동하·2020년 11월 8일
0

함수형 프로그래밍이란?

함수의 조합으로 개발하는 방식이다. 객체 지향이 객체의 조합이라면 함수형은 함수의 조합이다. 함수형의 장점은 순수 함수, 즉 인풋과 아웃풋이 동일하기 때문에 오류가 적고 모듈화 수준을 높일 수 있다!

함수형 프로그래밍 대표 예제 Add_maker

함수 안에 함수를 넣어 함수만으로 리턴값을 출력한다.

_repeat()

[...Array(times)]로 times만큼 배열을 만든다.keys()는 인덱스를 키로 갖는 이터레이터를 반환한다. 이터레이터는 배열 리터럴 안에서 스프레드 연산자와 함께 사용하면 [0,1,2,...,times-1]의 값을 가지는 새로운 배열을 만든다. 즉, 위 예제에서는 [0,1,2]가 나온다. 이제 map은 배열 길이만큼 함수를 실행하니까 repeat 함수에 전달된 두 번째 인자로 채워진 배열을 반환한다. 하지만 함수를 반환하지 않았으니 아직 고차함수는 아니다.

_repeatdly()

다형성

함수를 받고 다른 함수를 반환하는 고차함수를 이용하면 다형성을 구현할 수 있다. 다형성이란 다른 자료형이 하나의 상위 자료형으로 속하게 되는 개념인데 뭔 소리여. 쉽게 말하면 일반적인 메서드 map, filter는 객체의 메서드로 그 객체에만 적용이 되는데 객체 지향에선 상속을 통해 확장하지만 함수형 프로그래밍은 함수만을 이용하기 때문에 형체크와 예외처리에 쉽다!!

반환된 함수는 파라매터로 받은 타겟이 invoker에 전달된 메소드와 동일한 메서도를 갖고 있는지 체크한다. 없다면 에러가 나지 않고 undefined를 반환!

dispatch

디스패치는 인보커로 만든 함수 목록을 인자로 받는다. 그리고 타겟을 받는 함수를 반환, 반환된 함수는 타겟의 특정 메서드를 실행하여 undefined가 아닌 기대값이 나올 때까지 인보커 함수를 타겟과 함께 호출한다.

하나씩 살펴보면 디스패치는 인보커가 반환한 함수들을 인자로 받고 다른 함수를 반환하는 함수다.

(이해 불가)

출처 :
https://jongbeom-dev.tistory.com/m/164
https://brightestbulb.tistory.com/m/98
https://jeonghwan-kim.github.io/js/2017/04/10/function-by-function.html

profile
프론트엔드 개발

0개의 댓글