Tôi đang đọc SICP gần đây để học lập trình lisp.
Có một ví dụ trong cuốn sách để tổng hợp hàm cấp cao như dưới đây.
(define (sum term a next b)
...
(term a)
...
(next a)
...
Trong chức năng này, hạn và tiếp theo là các chức năng.
Tôi muốn viết cùng một chức năng trong elisp như thế này.
(defun sum (term a next b)
....
(funcall term a)
...
(func next a)
....
Sau đó, tôi xác định một số hàm kiểm tra để kiểm tra tổng
(defun inc-test (x) (+ x 1))
sum inc-test 1 inc-test 10
nhưng nó hiển thị các lỗi như thế này: Hàm không hợp lệ: inc-test
Khi tôi chưa quen với elisp, có ai có thể gọi cho tôi cách khắc phục không? rất cảm kích
inc-test
trong ví dụ cuối cùng của bạn được sử dụng như một biến, nhưng không được định nghĩa là một biến (nó là một hàm). Bạn cần chuyển một ký hiệu hoặc tham chiếu hàm tới funcall
. Do đó, một cách sửa mã của bạn là vượt qua nó 'inc-test
thay vì inc-test
(lưu ý trích dẫn).
sum
thế nào