Tôi tự hỏi liệu có cách nào tiết kiệm hơn so với sử dụng vòng lặp hay không. Dù sao này làm việc cho tôi trong CLISP:Lisp thường gặp: nhận tất cả các khóa của một bảng băm đã cho dưới dạng danh sách
(loop for key being the hash-keys of *my-hash* collect key)
Tôi đã nhìn thấy những người khác sử dụng maphash
, nhưng điều đó liên quan đến việc tích lũy mỗi chìa khóa vào một danh sách. Ngoài việc được tham gia nhiều hơn sử dụng vòng lặp, nó cũng giới thiệu một tác dụng phụ, mà tôi cố gắng tránh bất cứ khi nào tôi có thể - Tôi thích lập trình chức năng càng nhiều càng tốt :)
Có bất cứ điều gì được xác định trước như thế này cho thông thường nhiệm vụ, mặc dù thực hiện cụ thể?
(defun hash-keys (hash-table)
(loop for key being the hash-keys of hash-table collect key))
Phổ biến Lisp là rất nhiều "pin bao gồm" cho thời gian của mình. Mọi người chỉ mong đợi cách nhiều hơn (và các loại khác nhau) pin bây giờ. – Xach
Lisp thông thường chỉ hơi lớn so với C, hiện đang đẩy gần 700 trang tiêu chuẩn ISO. (Và chỉ là một chút "pin bao gồm" ngôn ngữ hơn nó là vào năm 1989 khi nó là 200-một cái gì đó trang.) – Kaz
Hầu hết các "pin bao gồm" ngôn ngữ được phổ biến những ngày này ** đã ** theo cách đó, bởi vì chức năng mà bạn viết cho mình có một bất lợi về hiệu suất. – Kaz