Problema do procedimento do esquema
Pergunta
Eu defini o procedimento do esquema para retornar outro procedimento com 2 parâmetros:
(define (smooth f)
(λ(x dx)(/ (+ (f (- x dx))
(f x)
(f (+ x dx)))
3.0)))
Se eu executar este procedimento com procedimento de pecado com 2 argumentos 10 e 0,0001, então tudo bem
((smooth sin) 10 0.0001) ==> -0.544021109075966
Se eu executar este procedimento recursivamente, ele terá erro
((smooth (smooth sin)) 10 0.0001)
==> procedure expects 2 arguments, given 1: #<promise:temp6>
Então, alguém pode me dizer onde está o meu problema? Agradeço antecipadamente !!!
PS: isso é separado do Exercício 1.44 no SICP
Solução
É bem simples, o resultado de (smooth sin)
é um procedimento de dois argumentos que se torna o F na lisa externa e F é aplicado a apenas um valor.
A solução é fazer com que o resultado de um procedimento de 1 argumento, em vez disso, você pode aplicá-lo repetidamente.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow