2012-09-15 26 views
8

Thực hiện 4clojure tập thể dục, một mục tiêu là cung cấp câu trả lời đúng và mục tiêu tùy chọn là cung cấp giải pháp ngắn nhất có thể (không gian không được tính), a.k.a golf. Sau đó bạn có thể so sánh với các giải pháp khác.Làm cách nào để tôi có thể tái cấu trúc mã nguồn Clojure?

Khi tập thể dục, tôi trước tiên tìm câu trả lời đúng. Sau đó, tôi áp dụng hướng dẫn hướng dẫn sử dụngrefactoring vào mã nguồn của tôi, bao gồm đổi tên các tên biến thành một ký tự đơn. Ví dụ, sau khi áp dụng bước cơ bản này, mã của tôi có thể trông như thế này.

(fn f[s] 
    (if (empty? s) 
    {} 
    (let [[k & r] s 
     [v n] (split-with number? r)] 
     (assoc (f n) k v)))) 

Khá khó đọc đối với con người, nhưng ghi điểm tốt hơn trong cuộc thi golf mã 4Clojure vì nó tiết kiệm nhiều ký tự.

Vì lợi ích của sự tò mò, bạn sẽ làm như thế nào trong các emacs để tự động hóa điều đó? Có chức năng tái cấu trúc trong clojure.core mà có thể giúp đỡ? Tôi không tìm thấy gì cả.

Trả lời

6

Tìm hiểu các thư viện. Ví dụ: có vẻ như bạn có thể sử dụng if-let hoặc seq. Nếu bạn không cân nhắc sử dụng công cụ phân tích tĩnh "gian lận", hãy xem Kibit

+0

Yeh thnx cho if-let hoặc seq, tôi biết chúng. Trên thực tế, mã được trích xuất ở đây chỉ nhằm mục đích minh họa. Cảm ơn bạn đã liên kết với Kibit. Thực ra tôi đang xem xét mã nguồn của nó, và khám phá các chức năng mới mà tôi không biết: đi bộ và đi trước. Từ tài liệu nó thực sự có mùi giống như những gì tôi đang tìm kiếm. Cảm ơn :-) –

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