Tôi có một chức năng mà phải mất một chức năng và một số và trả về việc áp dụng các chức năng về số lượng, và một hàm cube:qua chức năng như các đối số trong clojure
(defn something [fn x]
(fn x))
(defn cube [x]
(* x x x))
Khi tôi gọi hàm như sau nó hoạt động:
(something cube 4)
nhưng điều này trả về một lỗi:
(something Math/sin 3.14)
Tuy nhiên, hoạt động này:
(something #(Math/sin %) 3.14)
Giải thích là gì?
Cảm ơn, bây giờ tôi đã hiểu. Thực ra tôi đã cố hiểu các macro khi sự nhầm lẫn này xuất hiện. Bạn có thể giải thích dòng này cho tôi không? - Vì các macro không đánh giá các đối số của chúng, các tên hàm unquoted có thể được truyền cho chúng và các cuộc gọi đến các hàm có các đối số có thể được xây dựng. Định nghĩa chức năng không thể làm điều này và thay vào đó phải được thông qua các hàm ẩn danh bao bọc các cuộc gọi đến các hàm. ' – Pranav
Sự nhầm lẫn của tôi là tôi đã chuyển một cách rõ ràng một chức năng không được kiểm soát 'khối lập phương' thành 'cái gì đó' và nó hoạt động. – Pranav
Bạn có thể hỏi câu hỏi này như một câu hỏi SO thực sự hơn là trong các bình luận? Các định dạng ở đây là khá mờ nhạt, và tôi không thực sự muốn thêm "một câu trả lời" cho một câu hỏi hoàn toàn không liên quan. – amalloy