Seguinte: Lambdas Acima: Funções Anterior: Funções de Ordem Superior
Índice remissivo

Especialização

Por vezes, embora exista uma abstracção de ordem superior, é mais simples pensar numa de ordem inferior, quando esta última é um caso particular da primeira.

Embora o acumulatório seja uma abstracção de muito alto nível, o grande número de parâmetros que ela possui torna difícil a quem lê perceber o que se está a fazer. Assim, quando se repete muito um dado padrão de utilização, pode valer a pena criar casos particulares cuja leitura seja imediata. Estes casos particulares correspondem a fixar alguns dos parâmetros da abstracção superior. Vimos que as abstracções matemáticas do somatório e do produtório se podiam escrever em termos da abstracção de ordem superior acumulatório, i.e., são especializações desta última em que a operação de combinação, o valor inicial e a operação de sucessor estão fixas.

Um outro exemplo desse caso particular é a função produto. O produto é muito semelhante ao produtório, mas com a diferença que a passagem de um elemento ao seguinte é dada por uma função, e não incrementando o índice do produtório. Quanto ao resto é absolutamente igual. Assim, podemos definir o produto em termos do acumulatório fixando a operação de combinação no * e o valor inicial no 1.

(defun produto (func a suc b)
  (acumulatorio (function *) func 1 a suc b))

Exercício 22

O produto é uma abstração de ordem superior ou inferior à do produtório? Qual delas é que é um caso particular da outra?

Resposta

Exercício 23

Tal como a função produto, existe uma abstracção correspondente designada soma. Defina-a.

Resposta

Exercício 24

Sabe-se que a soma tex2html_wrap_inline3330 converge (muito lentamente) para tex2html_wrap_inline3332 . Defina a função que calcula a aproximação a tex2html_wrap_inline3334 até ao n-ésimo termo da soma. Determine tex2html_wrap_inline3334 até ao termo 2000.

Resposta



Copyright António Leitão, 1995