while을 range로
while
: 어떤 일들이 계속해서 반복하고자 하는데, 언제까지 반복할 지 지정해주는 문법이라고 할 수 있다.
- lisp에서는
while
을 range
라고 해석할 수 있다.
- 이 전 글에서는 순회의 경우였다면, 여기서는 숫자를 통해서 반복을 만드는 경우를 다룬다.
1부터 9까지 출력하기
while (명령적)
<script>
function f3(end) {
let i = 0;
while (i < end) {
console.log(i);
i++;
}
}
f3(10);
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));
}
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