이터러블 프로그래밍 혹은 리스트 프로세싱 (Lisp): range, each

이토니·2024년 1월 17일
0

JavaScript

목록 보기
28/33
post-thumbnail

while을 range로

  • while: 어떤 일들이 계속해서 반복하고자 하는데, 언제까지 반복할 지 지정해주는 문법이라고 할 수 있다.
  • lisp에서는 whilerange라고 해석할 수 있다.
  • 이 전 글에서는 순회의 경우였다면, 여기서는 숫자를 통해서 반복을 만드는 경우를 다룬다.

1부터 9까지 출력하기

while (명령적)

<script>
  function f3(end) {
    let i = 0;
    while (i < end) {
      console.log(i);
      i++;
    }
  }
  f3(10);
  • 0부터 9까지 출력한다.

range (Lisp)


  <script>
  function f4(end) {
      _.each(console.log, L.range(end));
    }
  f4(10);
 </script>
  • range 자체가 이터러블이 되기 때문에 each를 통해서 출력할 수 있다.

홀수만 출력하기

while (명령적)

<script>
  function f3(end) {
    let i = 1;
    while (i < end) {
      console.log(i);
      i += 2;
    }
  }
  f3(10);

</script>
  • 기존의 코드에서 2씩 증가, i는 1부터 시작하게 명령

range (lisp)

<script>
  function f4(end) {
    _.each(cosole.log, L.range(1, end, 2));
  }
  f4(10);
</script>
  • L.range(start, end, step)

효과를 each로 구분

  • 함수형 프로그래밍에서는 순수한 영역과 외부 세상의 변화를 주는 영역으로 나누어져있다.
  • each가 사용된다면 부수적 효과(이펙트)가 있는 것이다.
  • each는 함수의 실행 결과가 전달한 인자와 같은 값이 들어온다.
  • 그러나 무의미하지 않다. each는 반드시 그 함수 안에서 어떠한 효과를 일으킨다.
  function f4(end) {
    _.go(
      L.range(1, end, 2), // 여기까지 순수한 영역
      _.each(console.log)); // each 안에 부수 효과가 있다. 
  }
  f4(10);

  console.clear();
</script>

https://www.inflearn.com/course/%ED%95%A8%EC%88%98%ED%98%95_ES6_%EC%9D%91%EC%9A%A9%ED%8E%B8/dashboard

profile
cool & soft codes

0개의 댓글