`-` — 뺄셈·부호 반전 함수

- — 뺄셈·부호 반전 함수

인자를 하나만 받을 때와 여러 개 받을 때 행동이 달라지는 함수를 보면 처음엔 어리둥절할 수 있어요. 커먼 리스프의 뺄셈 함수 -가 정확히 그런 함수예요. 인자 개수에 따라 부호 반전뺄셈 두 가지 일을 해요.

출처: Common Lisp HyperSpec — Function -

본문

시그니처

- number                  => negation
- minuend &rest subtrahends+ => difference

인자와 반환값

  • number, minuend, subtrahend — 숫자.
  • negation, difference — 숫자.

설명

함수 -뺄셈과 부호 반전을 수행해요.

  • 숫자 하나만 주어지면 그 숫자의 부호를 반전(negation) 시킨 값을 반환해요.
  • 인자가 둘 이상이면 minuend(피감수)에서 모든 subtrahend(감수)를 빼서 그 결과를 반환해요.

-는 필요한 타입 변환(type conversion)도 수행해요. 예를 들어 정수에서 실수를 빼는 식으로 타입이 섞여 있어도 적절히 변환해 계산해요.

예제

(- 55.55)                  => -55.55
(- #c(3 -5))               => #C(-3 5)
(- 0)                      => 0
(eql (- 0.0) -0.0)         => true
(- #c(100 45) #c(0 45))    => 100
(- 10 1 2 3 4)             => 0

복소수에도 부호 반전이 적용되고, 인자를 여럿 주면 순서대로 모두 빼는 걸 확인할 수 있어요.

예외 상황

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

주의

없음.

함께 보기

  • +, *, / 함수