연산자: 계산과 논리의 도구

단순한 수학을 넘어, 데이터를 변환하고 논리를 구축하는 기본적인 도구들입니다. 리스펙스의 연산자를 통해 생각의 흐름을 정교하게 제어하는 방법을 알아보세요.

이 페이지는 리스펙스 예제에서 사용하는 내장 연산자에 대한 빠른 참조입니다. 참고: 오직 #f만 거짓이며, 빈 리스트 ()는 참입니다. 불리언 결과는 #t/#f로 표기합니다.

산술 연산자

이 연산자들은 표준 수학적 계산을 수행합니다.

+ (더하기)

두 개 이상의 숫자를 더합니다.

  • 인자가 없으면 0을 반환합니다.
  • 인자가 하나이면, 그 인자 자체를 반환합니다.
(+ 10 20 5)         ;; 결과: 35
(+ 10)              ;; 결과: 10
(+)                 ;; 결과: 0

- (빼기)

인자가 하나이면, 숫자의 부호를 바꿉니다. 두 개 이상이면, 첫 번째 숫자에서 이후의 숫자들을 뺍니다.

(- 100 20 10)       ;; 결과: 70
(- 10)              ;; 결과: -10

* (곱하기)

두 개 이상의 숫자를 곱합니다.

  • 인자가 없으면 1을 반환합니다.
  • 인자가 하나이면, 그 인자 자체를 반환합니다.
(* 5 10 2)          ;; 결과: 100
(* 7)               ;; 결과: 7
(*)                 ;; 결과: 1

/ (나누기)

첫 번째 숫자를 이후의 숫자들로 나눕니다. 0으로 나누면 오류를 발생시킵니다.

(/ 100 5 2)         ;; 결과: 10

modulo (나머지)

첫 번째 숫자를 두 번째 숫자로 나눈 나머지를 반환합니다. 정확히 두 개의 인자가 필요합니다. 별칭: %(비권장, modulo 사용 권장 — W330)

(modulo 10 3)       ;; 결과: 1

비교 연산자

이 연산자들은 값을 비교하고 #t 또는 #f를 반환합니다.

=, == (같음)

두 값이 같은지 확인합니다. 리스트의 경우, 요소들의 깊은 재귀적 비교를 수행합니다. ===의 별칭입니다.

(= 10 10)           ;; 결과: #t
(= "hello" "world") ;; 결과: #f
(= (list 1 2) (list 1 2)) ;; 결과: #t

!= (같지 않음)

두 값이 같지 않은지 확인합니다. =의 반대입니다.

(!= 10 5)           ;; 결과: #t
(!= (list 1 2) (list 1 2)) ;; 결과: #f

> (보다 큼)

첫 번째 숫자가 두 번째보다 큰지 확인합니다.

(> 10 5)            ;; 결과: #t

< (보다 작음)

첫 번째 숫자가 두 번째보다 작은지 확인합니다.

(< 10 5)            ;; 결과: #f

>= (보다 크거나 같음)

첫 번째 숫자가 두 번째보다 크거나 같은지 확인합니다.

(>= 10 10)          ;; 결과: #t

<= (보다 작거나 같음)

첫 번째 숫자가 두 번째보다 작거나 같은지 확인합니다.

(<= 10 5)           ;; 결과: #f

논리 연산자

이 연산자들은 불리언 논리로 작동하며 단축 평가(short-circuit)를 사용합니다.

and

#f를 만나자마자 #f를 반환합니다. 모두 참 같은 값이면 마지막 표현식의 값을 반환합니다.

(and #t #t)         ;; 결과: #t
(and #t #f 10)      ;; 결과: #f (#f에서 멈춤)

or

처음 만나는 참 같은 값을 반환합니다. 모두 #f이면 #f를 반환합니다.

(or #f 10 #t)       ;; 결과: 10 (10에서 멈춤)
(or #f #f)          ;; 결과: #f

not

반대의 불리언 값을 반환합니다. #f이면 #t, 그 외는 #f입니다.

(not #t)            ;; 결과: #f
(not #f)            ;; 결과: #t
(not 0)             ;; 결과: #f (0은 참 같은 값)