Sleeep23' space
Front-end Engineer

자바스크립트로 배우는 SICP - 9. 추상의 시너지

쌍 객체를 이용한 추상화!

2023-11-01 | 독서 | 5min


오늘은 쌍 객체를 이용하여 트리 자료구조를 구현하고, 트리의 요소들을 순회하며 함수를 적용하는 방식을 신호처리 분야와 연관지어 단계별로 추상화하는 내용에 대해서 다뤘다!

특히 기억나던 점은 트리의 각 요소들의 수치가 홀수인 잎을 골라서 그 제곱을 합산하는 함수와 피보나치 수열에서 짝수들을 선택해 이루어진 목록을 구성하는 함수의 공통 패턴을 확인하는 것이다.

전자의 경우,

  • 트리의 잎들을 나열하고
  • 홀수 잎들만 선택하는 필터를 적용하며
  • 각 잎의 수치를 제곱하고
  • 각 제곱한 수치들을 누산한다

의 과정들로 나눌 수 있다.

후자의 경우,

  • 범위의 요소들을 나열하고
  • 해당 피보나치 수를 계산하고
  • 짝수인 피보나치 수를 필터링하고
  • 각 수들을 쌍 객체를 이용하여 누산한다

의 과정들로 나눌 수 있다.

위에서 공통적인 부분은 나열, 필터, 함수 적용(계산), 누산의 부분들로 이루어져있다는 것이다!

  1. filter → 필터링 역할을 위한 추상함수 구현
  2. accumulate → 누산을 위한 추상함수 구현
  3. enumerate_interval / enumerate_tree → 각각의 계산을 위해 적용한 함수
  4. map → 필터들이나 계산함수들을 각 요소들에 적용하기 위한 추상함수 구현

위의 4가지 함수들을 활용한다면, 위 두 경우들을 모두 구현할 수 있는 추상을 달성할 수 있게 된다.

이 부분이 너무나 유익했다!

오늘은 급한 일정으로 이 정도만 작성하고 이전처럼 키워드 중심으로 자세하게 글을 이어나가겠다…!