두 번째 함수를 보자.

    fun mult(a: Int, b: Int?): Int = 5

    이 함수는 순수 함수다. 이 함수는 이름과 내용이 다르며 인자로 어떤 값을 받든 관계없이 같은 값을 반환한다. 이 함수는 상수다.

    Int 타입에 대한 div 함수는 순수 함수가 아니다. 제수가 0이면 예외가 발생한다.

    fun div(a: Int, b: Int): Int = a / b

    div를 순수 함수로 만들려면 두 번째 파라미터가 0인지 검사해서 0이면 오류를 뜻하는 값을 반환해야 한다. Int의 경우 이런 잘못된 값을 뜻하는 의미 있는 값을 정하기 어렵지만, 이는 전혀 다른 문제다.

    한편 Double에 대한 div 함수는 순수 함수다. 0.0으로 나누면 예외가 발생하는 대신 Infinity-Infinity가 반환되며, 이 둘은 Double의 인스턴스다.

    fun div(a: Double, b: Double): Double = a / b
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.