Đi chức năng này:Tại sao không có lỗi LISP yêu cầu báo giá trước đối số tham số của nó?
(defun sum-greater (x y z)
(> (+ x y) z))
Đó là sự hiểu biết của tôi rằng trong LISP phần tử đầu tiên trong danh sách luôn thể hiện một chức năng được thực hiện trên các nguyên tử/danh sách tiếp theo. Vì vậy, tại sao LISP không xử lý x
trong (x y z)
làm chức năng được thực hiện trên y
và z
. Rõ ràng đây không phải là hành vi mong muốn, nhưng nó sẽ là hành vi mong đợi.
Có lẽ chức năng xác định defun
bằng cách nào đó sẽ ghi đè đánh giá LISP chuẩn của danh sách? Nếu vậy, bạn có thể nêu chi tiết điều này không?
Cảm ơn
Nó cũng sẽ đánh giá tất cả các đối số khác của nó: bạn rõ ràng không muốn '(> ...)' đánh giá khi bạn đánh giá biểu mẫu 'defun'! – Ken
Điểm tốt, tôi cần phải nhận ra defun là nhiều hơn một chức năng bình thường từ đó một mình .. –