1장에서는 안전한 프로그래밍을 하기 위해 가장 중요한 기법으로 입력 데이터에 의존하지 않는 부분과 외부 세계의 상태에 의존하는 부분으로 프로그램을 명확히 분리하는 방법을 배웠다. 프로그램은 하위 프로그램(프러시저, 메서드, 함수 등으로 불림)으로 구성되며, 각 하위 프로그램에도 다시 외부 상태에 의존하는 부분과 의존하지 않는 부분을 분리하는 원칙을 재귀적으로 적용할 수 있다. 자바에서는 하위 프로그램을 메서드라고 부르지만 코틀린에서는 함수라고 부른다. 함수라는 용어는 명확한 정의가 있는 수학적 용어이기 때문에(그리고 코틀린 함수도 수학적 정의를 그대로 따르기 때문에) 더 적합한 용어라 할 수 있다. 내부에 아무 효과가 없어서 오로지 인자에 의해서만 반환 값이 결정되는 코틀린 함수는 수학 함수에 비유할 수 있다. 프로그래머들은 이런 함수를 종종 순수 함수(pure function)라고 부른다. 안전한 프로그램을 작성하려면 프로그래머는 다음과 같이 해야 한다.
• 계산 시 순수 함수만 사용한다
• 계산 결과를 외부 세계에서 사용하려면 순수 효과만 사용한다
항상 같은 인자에 대해 같은 결과를 내놓고 싶다면 순수 함수가 필요하다. 순수 함수를 사용하지 않으면 프로그램이 비결정적(nondeterministic)이기 때문에 프로그램이 올바른지 절대 검사할 수 없게 된다. 순수 효과는 덜 중요해 보이지만, 이에 대해 생각해 보자. 순수하지 않은 효과(impure effect)라는 말은 효과에 계산이 포함된다는 뜻인데, 효과와 계산이 한데 뭉쳐 있으면 계산 부분을 쉽게 테스트할 수 없다. 따라서 계산을 따로 (순수) 함수로 떼어내야 한다.