본문 바로가기
개발 공부/typescript

람다 라이브러리에 대해 알아보자.

by 억만장작 2021. 9. 28.

람다 라이브러리란?

우리가 함수형 프로그래밍을 하기 위해 필요한 유틸리티 함수들을 모아둔 라이브러리다. 이러한 유틸리티 라이브러리에는 람다 뿐만 아니라 언더스코어, 로대시 같은 것들도 있다.
람다 라이브러리는 기본적으로 javascript를 위해 만들어졌지만 나는 typescript를 공부하고 있으므로 typescript에

설치 및 import

npm install ramda
npm install @types/ramda

로 설치를 하고 사용할 수 있다. 아래 @types/ramda는 typescript를 위한 패키지이다.
import * as R from 'ramda로 import하여 사용하며 이런 식으로 ramda의 사용하지 않는 함수들도 가지고 오면 코드의 크기가 커지기 때문에 마지막에 import { 사용한 함수 } from 'ramda' 이런식으로 정리해주는 것이 좋다.

사용

람다 라이브러리는 말 그대로 라이브러리이기 때문에 많은 함수들을 가지고 있다. 그 중 몇가지만 간단하게 살펴보자.

R.range(최솟값, 최댓값 + 1)

인자로 넣어준 범위의 배열을 생성하는 함수다.
예시를 보자

console.log(R.range(1, 10)) // [1, 2, 3, 4, 5, 6, 7, 8, 9]

9개의 인자를 가진 배열을 반환한다.

R.map(콜백함수, 배열)

배열.map과 같은 기능을 하는 함수다. 배열의 각 요소에 매핑을 할 수 있다.
함수형 프로그래밍 언어의 매핑 함수는 보통 함수-컬렉션 순서로 인자를 매개변수에 넘기도록 정의되어 있지만 자바 스크립트는 방대의 방식으로 구현되어 있다.(여기서 자바 스크립트는 배열.map을 의미한다.) 하지만 R.map은 함수-컬렉션 순으로 인자를 매개변수에 전달하도록 되어 있다. (사용하는데에 큰 차이는 없지만 함수형 프로그래밍 관습을 지키는 것의 비중을 어떻게 두느냐에 따라 선택하여 사용하면 된다고 생각한다.)

    const array: number[] = R.range(1, 10);
    console.log(R.map((x) => x * x, array));
    console.log(array.map((x) => x * x));
    // 같다.

R.apply(함수, 가변 인자 배열)

가변 인자 배열(args)을 취할 때는 R.map() 대신 R.apply()를 사용한다.

R.map(Math.max, collback) // 동작 x
R.apply(Math.max, collback) // 적절.

참고한 곳

공부하던 책에서 람다 라이브러리가 나와서 정리 겸 블로그를 작성하려고 했는데 공부하면서 느낀점으로는 지금 당장은 필요성을 못 느끼겠다. 계속 공부하다가 필요성을 느끼면 그 때 공부해보자.

'개발 공부 > typescript' 카테고리의 다른 글

typescript 파일 실행시키기.  (0) 2021.09.12

댓글