Lisps, trong đó có Đề án, được tự động gõ, và 'cách lisp' là phải có nhiều chức năng trong một cấu trúc dữ liệu duy nhất chứ không phải là cấu trúc dữ liệu khác nhau cho các nhiệm vụ khác nhau.
Vì vậy, câu hỏi "Điểm yêu cầu null ở cuối danh sách là gì?" không phải là người thích hợp để hỏi.
Chức năng cons
không yêu cầu bạn cung cấp đối tượng cons
hoặc nil
làm đối số thứ hai. Nếu đối số thứ hai không phải là đối tượng cons
hoặc nil
, thì bạn sẽ nhận được một cặp thay vì danh sách và thời gian chạy không in ra bằng ký hiệu danh sách nhưng có dấu chấm.
Vì vậy, nếu bạn muốn xây dựng thứ gì đó có hình dạng giống như danh sách, hãy cung cấp cons
danh sách làm đối số thứ hai.Nếu bạn muốn xây dựng một cái gì đó khác, sau đó cung cấp cho cons
một cái gì đó khác như đối số thứ hai của nó.
Cặp hữu ích nếu bạn muốn cấu trúc dữ liệu có chính xác hai giá trị trong đó. Với một cặp, bạn không cần nil ở cuối để đánh dấu chiều dài của nó, vì vậy nó có hiệu quả hơn một chút. Một danh sách các cặp là việc thực hiện đơn giản một bản đồ của khóa để định giá; lisp thông thường có chức năng hỗ trợ danh sách thuộc tính như là một phần của thư viện chuẩn của nó. Vì vậy, câu hỏi thực sự là "tại sao bạn có thể xây dựng cả hai cặp và danh sách với cùng một hàm cons
?" Và câu trả lời là "tại sao có hai cấu trúc dữ liệu khi bạn chỉ cần một?"
Nguồn
2009-11-06 20:03:41