더북(TheBook)

append1 함수는 인자를 반환하기 전에 변이시킨다. 그리고 이렇게 변이시킨 결과를 함수 밖에서 관찰할 수 있다. 따라서 이 함수는 순수 함수가 아니다.

fun append2(i: Int, list: List<Int>) = list + i

append2 함수는 원소를 인자로 받은 리스트에 더하는 것으로 보인다. 하지만 실제로는 그렇지 않다. list + i라는 식은 list의 모든 원소가 같은 순서로 있고 맨 뒤에 i가 더 들어 있는 새로운 (불변) 리스트를 만들어낸다. 아무것도 변이된 것이 없다. 따라서 append2는 순수 함수다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.