좀 어렵기도 하고 모바일이라 쓰기도 힘드니 간단요약하면

우선 엄격성

대부분의 함수들은 엄격해서 입력값에 대해 평가를 한대

무슨 뜻이냐면

int foo(1.0 + 2.0) 을 해주면 우리 함수는 foo를 실행하기 전에

1.0 + 2.0을 평가해서 3.0이랴 평가된 값을 사용한단거야




나태성이란 무엇이냐면

isTrue() && print("True") 처럼 부울연산이 대표적이야

첫번째를 평가 한 후 두번째의 평가를 시작한다는 뜻이지

이게 어떻게 사용되냐면


[1, 2, 3, 4]
    .map(x+2)
    .filter(x%2==0)
    .map(x+10)
    .toList()
가 있다고 해볼게 ㅇㅅㅇ


우선 엄격성!

[1, 2, 3, 4] 에서 매서드들이 만약에 엄격하다면

map은 [1,2,3,4]를 한번에 입력받아서 [3,4,5,6]를 생성할거고

그걸 filter에게 입력값으로 건내준 뒤 [3,4,5,6]은 폐기가 될거야

filter는 마찬가지로 [4,6]을

마지막 map은 [40, 60]을 주는거지

그럼 나태성을 보자

[1,2,3,4] 를 한번에 평가하지 않고 1부터 평가를 시작해

1은 map을 거쳐 3이되고 filter에게 넘어가서 걸러지지

그다음에야 2를 평가해서 4가 되고, 안걸러지고, 40으로 변환이 돼



결론은

이러한 특성은 어떤것이 좋다 나쁘다를 따질 순 없지만

메모리 효율면에서나 시간면에서 차이를 보이기 때문에

어떤 차이가 있는지정돈 알아두면 좋은거같아