Tôi muốn tạo một fn hoàn toàn khi chạy (tức là tên và biểu tượng arg được quyết định khi chạy, không phải trong mã) Cách tốt nhất để đạt được điều này là gì?Clojure: Cách tạo hàm tại thời gian chạy
Ví dụ: làm cách nào để triển khai chức năng sau?
(defn gen-fn [name arg-symbols body]
...
...
mà sẽ được sử dụng như thế này:
(gen-fn "my-func-name" (symbol "x") (symbol "y") (println "this is body. x=" x))
Lưu ý rằng chức năng tên, args và cơ thể không được mã hóa nhưng có thể được quyết định trong thời gian chạy
Yes. Đây là thứ xấu xí. Lý do tôi cần điều này là tôi đang thử nghiệm với GeneticProgramming dưới Clojure. Clojure có vẻ thực sự tự nhiên cho việc này. – GabiMe
Ah. Được. GP có thể là sử dụng hợp pháp của 'eval'. Nhưng vẫn cảnh giác với những hiệu ứng lạ với 'eval'. – kotarak
lý do tại sao eval? bạn không thể làm điều này với một macro? –