Tôi đang làm việc với clojure và trong khi tôi đã dabbled với lisps trước, tôi gặp khó khăn khi tìm một cách sạch sẽ để làm cho tuyên bố trong tuyên bố cond. Ví dụ, hãy xem xét các chức năng sau:để cho bên trong cond
(defn operate-on-list [xs]
(let [[unpack vector] (first xs)]
(cond
[(empty? xs) 'empty
unpack vector
:else (operate-on-list (rest xs))])))
Đó là một hoạt động đệ quy khá tiêu chuẩn trên một danh sách, nhưng nó cần phải làm một số công việc về phần tử đầu tiên trong danh sách trước khi nó hoạt động với những nội dung. Vấn đề, tất nhiên, là danh sách có thể trống.
Trong ví dụ này, nó sẽ không khó để thay đổi unpack
-((first xs) 0)
và vector
-((first xs) 1)
, nhưng điều này nhanh chóng trở nên xấu xí nếu nhiều việc cần được thực hiện trên (xs đầu tiên).
Có cách nào hiệu quả để sử dụng lệnh tuyên bố một cách thông qua lệnh cond không?
Cảm ơn.
-Nate
Hi - nó không rõ ràng cho tôi những gì bạn đang cố gắng để đạt được ở đây. Bạn có thể tìm thấy http://www.assembla.com/spaces/clojure/tickets/200 và http://groups.google.com/group/clojure/browse_thread/thread/c1097ce07506fc39 thú vị này, vui lòng xem xét chức năng được cho là gì để làm trong câu hỏi của bạn, và một số ví dụ đầu vào và đầu ra. Cú pháp không giống như một câu lệnh cond hợp lệ vì phần thân của cond được bọc trong một vectơ. –