2010-07-01 42 views
5

Tôi nhận được thông báo lỗi sau trong Common Lisp.5E | có nghĩa là trong Common Lisp?

Điều gì || có nghĩa là trong CL?

CL-USER> (write-to-string 5e) 
The variable |5E| is unbound. 
    [Condition of type UNBOUND-VARIABLE] 

Trả lời

10

| foo | chỉ là một đại diện được in cho các biểu tượng. 5e không đọc như một số theo mặc định, do đó, nó là một biểu tượng và có thể được in như | 5E |. Người ta có thể sử dụng nó cũng để có tất cả các loại ký tự trong các biểu tượng, bao gồm cả khoảng trắng. | đây là một biểu tượng, phải không? - nó là!

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> 

Cũng lưu ý rằng Lisp thường sử dụng ký hiệu chữ hoa theo mặc định. Ký hiệu đọc sẽ được viết hoa. Vì vậy, biểu tượng foo được đọc và sau đó có một tên biểu tượng "FOO". Để biểu thị một ký hiệu có chữ cái thường hoặc chữ thường, người ta có thể sử dụng | foo |. Nếu bạn tạo một ký hiệu chữ thường với một cái gì đó như (intern "foo"), thì nó cũng sẽ được in dưới dạng | foo |. Nếu bạn tạo một biểu tượng có tên uppcase với một cái gì đó như (intern "FOO"), sau đó nó sẽ được in như foo. Đó là lý do tại sao 5e in như | 5E | với chữ hoa E.

Nếu bạn có biểu tượng, bạn có thể lấy tên của nó làm chuỗi bằng hàm SYMBOL-NAME.

Bạn có thể đọc số nguyên từ chuỗi có chức năng PARSE-INTEGER. Nó có thông số từ khóa: RADIX, nơi bạn có thể cung cấp cơ số để đọc.

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

Nếu không, hãy sử dụng số hex như # x5e hoặc thay đổi cơ sở đọc.

Frank Shearar chỉ ra tài liệu trong Common Lisp HyperSpec: 2.3.4 Symbols as Tokens.

+1

Phần CLHS 2.3.4 mô tả cú pháp của một biểu tượng. –

+0

Cảm ơn bạn đã trả lời phức tạp của bạn. – jeon

5

Sử dụng các ký tự đó làm dấu ngoặc kép. Nó đang cố gắng giải thích 5e như một tên của một biến. Tôi đoán là bạn thực sự muốn nó giải thích nó như một số hex, vì vậy nó có lẽ nên là #x5e.

+0

Tôi thực sự muốn diễn giải từ 5e đến # x5e. – jeon

+0

Câu trả lời đúng. –

+0

Tại sao lại là downvote? – Gabe