더북(TheBook)

하지만 함수 이름을 너무 맹신하면 안 된다. 예를 들어 이 함수에 이전 값(predecessor)을 의미하는 전혀 엉뚱한 이름을 붙일 수도 있다.

predecessor(x) = x + 1

함수 이름과 함수 정의가 어떤 관계를 꼭 만족해야 한다는 규칙이 없으므로 이름을 이렇게 붙여도 오류가 발생하지 않는다. 하지만 이런 이름을 쓰는 것은 잘못된 일이다. 사실 여러분이 함수에 붙이는 이름은 그 함수 정의의 일부가 아니고 해당 함수를 편리하게 참조하기 위한 방법일 뿐이다.

여기서 함수가 어떤 동작을 하는지가 아닌 어떤 것인지(정의)를 이야기하고 있음에 유의하라. 함수는 아무 일도 하지 않는다. successor 함수는 인자로 받은 x에 1을 더하지 않는다. 여러분은 다음 값을 계산하기 위해 정숫값에 1을 더할 수 있다. 하지만 successor 함수는 이런 계산을 수행하지 않는다. successor 함수는 단지 정수와 그 정수 다음(오름차순으로 따짐)에 오는 수 사이의 대응 관계에 지나지 않는다.

successor(x)

successor(x)라는 식은 그냥 x + 1과 동등하다. 이는 여러분이 successor(x)와 마주칠 때마다 이를 (x + 1)로 바꿀 수 있다는 뜻이다. (x + 1)에서 괄호는 대체하는 식을 따로 분리하기 위해 붙인 것이다. 이 식을 단독으로 사용한다면 괄호가 필요 없지만 경우에 따라 필요할 때도 있다.

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