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

Foi útil?

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
scroll top