리터럴: `quote` 와 `#%datum`

리터럴: quote#%datum

많은 폼이 리터럴로 취급될 때 내부적으로 #%datum을 거쳐 묵시적으로 인용(quote)돼요. 프로그램 조각을 그대로 데이터로 다루고 싶을 때 사용하는 가장 기본적인 문법 가운데 하나예요.

출처: Racket Reference

본문

3.3 리터럴: quote#%datum

많은 폼이 리터럴로 취급될 때 #%datum을 통해 묵시적으로 인용돼요. 자세한 내용은 확장 단계(Expansion Steps)에서 확인할 수 있어요.

Racket 가이드의 "인용: quote와 ' (Quoting)" 절에서 quote를 소개해요.

syntax

(quote datum)

datum(즉, 프로그램 조각 그 자체의 표현)에 해당하는 상수 값을 만들어 내요. 이때 값은 어휘 정보(lexical information), 소스 위치 등은 포함하지 않아요. 인용된 페어(pair), 벡터, 박스는 불변(immutable)이에요.

예시:

> (quote x)
'x
> (quote (+ 1 2))
'(+ 1 2)
> (+ 1 2)
3

syntax

(#%datum . datum)

datum이 키워드(keyword)가 아니라면 (quote datum)으로 확장돼요. 만약 datum이 키워드라면 문법 오류(syntax error)가 보고돼요.

확장기가 어떤 방식으로 #%datum 식별자를 도입하는지에 대한 정보는 확장 단계(Expansion Steps)를 함께 보세요.

예시:

> (#%datum . 10)
10
> (#%datum . x)
'x
> (#%datum . #:x)
eval:6:0: #%datum: keyword misused as an expression
at: #:x

더 알아보기