Tôi đã quyết định tìm hiểu (Common) Lisp cách đây vài ngày và tôi nhận ra rằng đây là một câu hỏi mới và nó có lẽ rất tầm thường đối với một người có ít kinh nghiệm nhất.Lisp: CHAR không được khai báo hay ràng buộc
Vì vậy, về cơ bản những gì xảy ra là tôi tải lên Emacs + Slime (thông qua Lisp trong một Box) và viết chương trình của tôi (bên dưới):
(defun last-char (s) "Get last character"
(char s (- (length s) 1)))
Và sau đó tôi cố gắng biên dịch nó với C - cM - k, nhưng sau đó tôi nhận được cảnh báo sau đây:
CHAR không phải là tuyên bố cũng không bị ràng buộc, đó sẽ được coi như thể nó đã được tuyên bố ĐẶC BIỆT.
Ý nghĩa của cảnh báo này là gì? Tôi cho rằng nó có thể là một cái gì đó tương tự như quên #includes trong C, nhưng tôi không thể tìm ra nó. Tôi nên làm gì với nó? Tôi chỉ đơn giản là bỏ qua nó?
có một số từ CHAR trong tệp của bạn là biến. Bạn biên dịch toàn bộ tập tin với c-c m-k. Kiểm tra tệp của bạn, có gì trong đó? Chỉ có chức năng trên? Sau đó, chúng tôi sẽ không thấy lỗi. –
Rainer Joswig: Đó là chính xác những gì đã xảy ra. –
Tôi thường sử dụng C-c C-c để (biên dịch lại) chỉ có dạng toplevel tại điểm. Nếu có điều gì lạ xảy ra, hãy thụt lại toàn bộ tệp (C-M-q với toàn bộ tệp dưới dạng vùng) và tìm định dạng lạ. Trong trường hợp của bạn, bạn có thể nhận thấy rằng phần thân hàm được thụt vào lạ; đây là một gợi ý rằng, chống lại giả định giả định của bạn, nó không phải là một hình thức toplevel trong tập tin. – Svante