2013-07-02 29 views
5

CLHS nóiTại sao in vòng tròn mặc định thành 0?

An attempt to print a circular structure with *print-circle* set 
to nil may lead to looping behavior and failure to terminate. 

Và sau đó có này:

Why does this Lisp macro as a whole work, even though each piece doesn't work?

Rõ ràng, có *print-circle* bộ để nil dẫn đến bất ngờ. Tại sao *print-circle* được đặt thành 0 theo mặc định trên nhiều hệ thống? Điều gì có thể xảy ra nếu tôi đặt nó thành t toàn cầu ngay từ đầu mã của tôi?

Trả lời

8

Nếu bạn đặt *print-circle* thành true, thì tất cả các chức năng đầu ra của bạn phải thực hiện kiểm tra chu kỳ. Điều đó có nghĩa là chúng có thể làm chậm và mất nhiều bộ nhớ hơn.

Nếu bạn không thực sự sử dụng cấu trúc hình tròn (và tôi không phải là chuyên gia Lisp, nhưng tôi có xu hướng tránh chúng như bệnh dịch hạch), tôi sẽ không quay vòng kiểm tra trong mã sản xuất.

Các vấn đề liên quan