Estou lendo o SICP recentemente para aprender a programação lisp.
Há um exemplo no livro para fazer uma soma de funções de alto nível, como abaixo.
(define (sum term a next b)
...
(term a)
...
(next a)
...
Nesta função, term e next são funções.
Eu quero escrever a mesma função no elisp assim.
(defun sum (term a next b)
....
(funcall term a)
...
(func next a)
....
Então eu defino algumas funções de teste para testar soma
(defun inc-test (x) (+ x 1))
sum inc-test 1 inc-test 10
mas mostra erros como este: Função inválida: inc-test
Como sou novo no elisp, alguém pode me dizer como consertar isso? muito aprecio
inc-test
no seu último exemplo é usado como uma variável, mas não é definido como uma variável (é uma função). Você precisa passar um símbolo ou uma referência de função para funcall
. Portanto, uma maneira de corrigir seu código é passá-lo em 'inc-test
vez de inc-test
(observe a citação).
sum
?