`1+`, `1-` — 1 증가·감소 함수
1+, 1- — 1 증가·감소 함수
숫자에 1을 더하거나 뺄 일이 잦잖아요. 그걸 매번 (+ n 1)처럼 쓰는 것도 되지만, 커먼 리스프는 이를 위한 전용 함수 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