quinta-feira, 21 de junho de 2007

Criando listas com foldl

Vários exemplos apresentados na literatura produzem, com o foldl, elementos simples, como um número. Mas também podemos produzir listas.

No exemplo a seguir, desejamos produzir, a partir de uma lista xs, uma lista com o quadrado de cada número de xs.

A função quadaux opera produzindo uma nova lista, acrescentando ao final da lista xs o quadrado do número x dado, usando a operação "++" para concatenar duas listas. Primeiro produzimos uma lista com o quadrado do número dado e depois concatenamos.

quadaux xs x= xs ++ [x * x]

A função lquad aplica a função quadaux a cada elemento da lista de entrada xs, tendo como elemento neutro a lista vazia.

lquad xs = foldl quadaux [ ] xs

Vejamos a aplicação da função usando o ambiente HUGS


>lquad [1..10]
[1,4,9,16,25,36,49,64,81,100]

> lquad []
[]

Nenhum comentário: