데이터 타입: 생각의 형태

숫자, 문자열, 리스트, 불리언... 이것들은 단순한 데이터가 아니라, 생각을 담는 다양한 그릇입니다. 리스펙스에서 데이터가 어떤 형태를 가지며, 이 형태들이 어떻게 세상을 모델링하는지 알아보세요.

이 페이지는 리스펙스의 입력 전용 S‑표현식 표면에서 다루는 기본 데이터들을 간단한 예제로 소개합니다. 실행 의미와 표준 라이브러리는 범위 밖이며, 아래 예제는 리나 코드 변환기에서 그대로 시도할 수 있습니다.

바로 열기: www.lenacode.com

원시 타입 (Primitives)

리스펙스의 가장 기초적인 값들입니다.

숫자 (Numbers)

입력형은 정수/유리수/실수입니다.

30
19.99
-100
42/7

불리언 (Booleans)

진리값 리터럴은 #t, #f입니다.

#t
#f
(and #t #t)       ; ⇒ #t
(or #f #t)        ; ⇒ #t
(not #t)          ; ⇒ #f
(if #t "yes" "no") ; ⇒ "yes"

문자 (Characters)

단일 문자를 나타냅니다.

#\a
#\space
#\x03B1          ; 그리스 문자 α

문자열 (Strings)

큰따옴표로 묶인 문자 시퀀스를 나타냅니다.

"Lispex Language"
"Hello, Lispex! 👋"
""

"quote: \" \n tab: \t hex: \x41;" ; 이스케이프 예시

심벌 (Symbols)

이름 자체를 값으로 취급하는 식별자입니다(예약어는 바인딩 금지).

'apple
'Σ
'util.string

컬렉션 타입 (Collection Types)

리스트 (Lists)

순서가 있는 항목의 컬렉션입니다. (list ...) 구문으로 생성합니다. 빈 리스트는 () 입니다. 점리스트(dotted list)도 입력으로 허용됩니다.

(list)
(list 1 2 3 4 5)
(list "hello" "world" "lispex")
(list 1 (list 2 3) 4)
(1 2 3 . 4)     ; 점리스트 입력형

자주 쓰는 연산(첫 원소/나머지/길이, append, map/filter 등)은 표준 라이브러리에 있습니다.

벡터 (Vectors)

#(1 2 3)
#("a" "b" "c")

바이트벡터 (Bytevectors)

정수(0–255) 요소로 이루어진 바이트 배열입니다.

#u8(72 101 108 108 111)

R5RS-compat 모드에서는 #u8(...)이 일반 벡터로 자동 대체될 수 있습니다(경고와 함께). 자세한 내용은 하단 참고.

인용 계열 (Quote family)

데이터 리터럴 구성을 위한 리더 축약을 제공합니다.

'x              ; ⇒ (quote x)
`(a ,x ,@ys b)  ; ⇒ (append (list 'a x) ys (list 'b))

함수 (Functions)

함수는 리스펙스에서 일급입니다. 익명 함수는 lambda, 이름 있는 함수는 define 설탕을 사용합니다.

(define (add a b) (+ a b))
(add 10 20) ; ⇒ 30
(lambda (n) (+ n 1)) ; 익명 함수 값

R5RS-compat 참고

파일 상단에 다음을 선언하면 입력 전개가 R5RS와의 호환을 높이도록 조정됩니다.

;! compat: r5rs
  • #u8(...) 바이트벡터는 벡터로 대체될 수 있습니다.
  • case의 비교 의미는 문서 서술상 equal?로 전개되나, R5RS 실행기에서는 eqv?임에 유의하세요.
  • 모듈 헤더 (module ...)는 제거/무시되어 파일 최상위로 평탄화됩니다.