`1+`, `1-` — 1 증가·감소 함수

1+, 1- — 1 증가·감소 함수

숫자에 1을 더하거나 뺄 일이 잦잖아요. 그걸 매번 (+ n 1)처럼 쓰는 것도 되지만, 커먼 리스프는 이를 위한 전용 함수 1+1-를 따로 마련해 뒀어요. 순회할 때 카운터를 세는 코드에서 특히 자주 보게 될 거예요.

출처: Common Lisp HyperSpec — Function 1+, 1-

본문

시그니처

1+ number => successor
1- number => predecessor

인자와 반환값

  • number — 숫자.
  • successor, predecessor — 숫자.

설명

  • 1+는 인자 number보다 1 큰 숫자를 반환해요.
  • 1-는 인자 number보다 1 작은 숫자를 반환해요.

두 함수 모두 필수 인자를 정확히 하나 받아요. 뒤의 +/-는 부호 표기가 아니라 "one more / one less"라는 뜻의 이름이에요.

예제

(1+ 99)            => 100
(1- 100)           => 99
(1+ (complex 0.0)) => #C(1.0 0.0)
(1- 5/3)           => 2/3

복소수에 1+를 쓰면 실수부만 1 증가한 결과가 나오는 걸 볼 수 있어요.

예외 상황

  • 인자가 숫자가 아니면 type-error를 신호할 수 있어요.
  • arithmetic-error를 신호할 수도 있어요.

주의

1+1-는 각각 다음 식과 동등해요.

(1+ number) == (+ number 1)
(1- number) == (- number 1)

구현은 이 두 표현식의 성능이 같아지도록 하는 게 권장돼요.

함께 보기

  • incf, decf