O processo que um procedure gera é, obviamente, dependente das regras usadas pelo interpretador. Por exemplo, considere o procedure iterativo gcd
apresentado. Suponha que interpretássemos esse procedure usando ordem normal de avaliação, conforme explicado na seção 1.1.5. (A ordem normal de avaliação para o if
é descrita no exercício 1.5). Usando o método da substituição (para a ordem normal), ilustre o processo gerado ao avaliar (gcd 206 40)
e indique o as operações remainder
que são de fato realizadas. Quantas operações remainder
são realizadas na avaliação em ordem normal de (gcd 206 40)
? E na ordem aplicativa?
Para resolver o exercício vamos supor que remainder
é uma primitiva.
Ordem aplicativa
Abaixo é mostrada a avaliação da expressão usando ordem aplicativa. A operação remainder
é efetuada 4 vezes.
Agora, façamos a avaliação usando ordem normal
Vemos, portanto, que, na ordem normal, há 18 avaliações de remainder
, enquanto na ordem aplicativa há apenas 4.
OBS: O código mostrado não fica bem formatado com a largura de coluna padrão do blog. Para facilitar o acompanhamento, sugiro que copie e cole o mesmo para um editor que destaca a sintaxe. Atualmente, estou usando PLT-Racket para resolver os exercícios.
Nenhum comentário:
Postar um comentário