2010-07-01 4 views

답변

10

| foo | 기호에 대한 인쇄 된 표현입니다. 5e는 기본적으로 숫자로 읽지 않으므로 기호이며 | 5E |로 인쇄 될 수 있습니다. 또한 공백을 포함하여 모든 종류의 문자를 기호로 사용할 수 있습니다. 이건 상징이야, 안 그래? - 그것은!

CL-USER > (describe '|this is a symbol, isn't it?|) 

|this is a symbol, isn't it?| is a SYMBOL 
NAME   "this is a symbol, isn't it?" 
VALUE   #<unbound value> 
FUNCTION  #<unbound function> 
PLIST   NIL 
PACKAGE  #<The COMMON-LISP-USER package, 798/1024 internal, 0/4 external> 

또한 Common Lisp는 기본적으로 대문자 기호를 사용합니다. 읽은 기호는 대문자로 표기됩니다. 따라서 기호 foo가 읽히고 기호 이름이 "FOO"가됩니다. 소문자 또는 대소 문자가 혼합 된 기호를 나타내려면 | foo |를 사용할 수 있습니다. (intern "foo")와 같은 소문자 기호를 작성하면 | foo |로 인쇄됩니다. uppcase라는 이름의 심볼을 (intern "FOO")와 같이 작성하면 foo로 인쇄됩니다. 그것이 5e가 5E |로 인쇄하는 이유입니다.

기호가있는 경우 이름을 SYMBOL-NAME이라는 문자열로 가져올 수 있습니다.

문자열에서 PARSE-INTEGER 기능을 사용하여 정수를 읽을 수 있습니다. 여기에는 키워드 매개 변수 RADIX가 있습니다. 여기서 읽을 수있는 기수를 제공 할 수 있습니다.

CL-USER > (parse-integer (symbol-name '5e) :radix 16) 
94 

그렇지 않으면 # x5e와 같은 16 진수를 사용하거나 읽기 기준을 변경하십시오.

Frank Shearar는 Common Lisp HyperSpec : 2.3.4 Symbols as Tokens의 문서를 지적합니다.

+1

CLHS 섹션 2.3.4는 심볼의 구문을 설명합니다. –

+0

정성스럽게 대답 해 주셔서 감사합니다. – jeon

5

이 문자는 따옴표로 사용됩니다. 변수의 이름으로 5e을 해석하려고합니다. 내 생각 엔 실제로 16 진수로 해석하기를 원하므로 #x5e이어야합니다.

+0

정말 5e에서 # x5e로 해석하고 싶습니다. – jeon

+0

정답. –

+0

왜 downvote? – Gabe

관련 문제