Tôi có một danh sách lớn các biến toàn cục mà mỗi biến có chức năng thiết lập riêng của chúng. Mục tiêu của tôi là đi qua danh sách này, gọi hàm thiết lập của từng mục và tạo một số thống kê về dữ liệu được tải trong biến phù hợp. Tuy nhiên, những gì tôi đang cố gắng hiện không hoạt động và tôi cần trợ giúp để chương trình của tôi gọi các chức năng cài đặt.Tên hàm là chuỗi trong Lisp?
Các biến toàn cầu và các hàm thiết lập của chúng phân biệt chữ hoa chữ thường vì nó xuất phát từ XML và cần thiết cho tính duy nhất.
Dữ liệu trông giống như sau:
'(ABCD ABC\d AB\c\d ...)
và các chức năng thiết lập giống như thế này:
(defun setup_ABCD...
(defun setup_ABC\d...
Tôi đã thử concatenating chúng lại với nhau và biến chuỗi kết quả vào một chức năng, nhưng điều này cản trở không gian tên của hàm thiết lập đã tải trước đó. Dưới đây là cách tôi đã cố thực hiện điều đó:
(make-symbol (concatenate 'string "setup_" (symbol-name(first '(abc\d)))))
Nhưng việc sử dụng funcall
sẽ không hoạt động. Làm thế nào tôi có thể nhận được một chức năng gọi từ điều này?
Nếu câu trả lời của người trả lời không có tác dụng, sẽ tốt hơn nếu đánh dấu nó là được chấp nhận bằng cách nhấp vào dấu tích. – Pablo
Tiêu chuẩn đặt tên trong Lisp là sử dụng dấu gạch nối, chứ không phải dấu gạch dưới. Ngoài ra, trình đọc sẽ chồng lên tất cả các ký hiệu trong nội bộ, và tiêu chuẩn là viết chúng trong trường hợp thấp hơn, vì vậy cách tiêu chuẩn để gọi hàm thiết lập của bạn là 'setup-abcd'. – Svante
Xin lỗi vì đã đánh dấu chậm! Ngoài ra các fns thiết lập được viết bởi một không lisper. Tôi đã cho anh mượn bản sao cuốn sách Norvigs Lisp/AI của tôi. – ktdh