2012-07-05 31 views
5

Đây là cách tôi xuất khẩu ký :bar:baz từ gói foo:Làm sao để Lisp quên đi các ký hiệu đã xuất trước đó?

(in-package :cl-user) 
(defpackage foo 
    (:use :cl) 
    (:export :bar :baz)) 
(in-package :foo) 

Khi tôi loại bỏ :baz từ danh sách các biểu tượng xuất khẩu SBCL phàn nàn và biên soạn thất bại.

warning: 
    FOO also exports the following symbols: 
     (FOO:BAZ) 

Làm cách nào để làm cho SBCL quên mất :baz mà không tải lại SLIME?

Trả lời

10

SBCL:

* (apropos "unexport") 

UNEXPORT (fbound) 


* (documentation 'unexport 'function) 

"Makes SYMBOLS no longer exported from PACKAGE." 


* (apropos "unintern") 

UNINTERN (fbound) 


* (documentation 'unintern 'function) 

"Makes SYMBOL no longer present in PACKAGE. If SYMBOL was present then T is 
returned, otherwise NIL. If PACKAGE is SYMBOL's home package, then it is made 
uninterned." 
2

Có rất nhiều tài liệu về những vấn đề này, mà bạn nên đọc hoặc đọc lại. Điều này gói/biểu tượng điều âm thanh tầm thường ngay từ cái nhìn đầu tiên, nhưng nó là đủ khác nhau từ những gì các ngôn ngữ khác để có giá trị đọc một số (tức là cố gắng sử dụng lại kiến ​​thức từ các ngôn ngữ khác đặc biệt nguy hiểm khi nói đến gói và biểu tượng). Nếu sau khi đọc tài liệu, bạn vẫn gặp khó khăn, hãy thử đọc lại chúng (trải nghiệm thu được do gặp khó khăn sẽ giúp bạn tập trung vào các phần liên quan; đọc lại mà không gặp rắc rối giữa các bài đọc không phải là IMHO rất hiệu quả).

Một số liên kết tôi thấy hữu ích: