• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Nazgulled

Contagem de elementos em lista com foldr

3 mensagens neste tópico

Estou aqui com uma dúvida em perceber exactamente o que está aqui acontecer. Por um lado até percebo, mas não percebo bem, porque noutros exemplos diferentes, atrapalho-me todo...

O código que tenho é:

foldr (\_ x -> 1 + x) 0 ["A", "B", "C"]

E o resultado é 3 obviamente.

Eu percebo a função anónima, seria algo como:

conta :: Int -> Int -> Int

conta _ x = 1 + x

O que eu não percebo é aquele 'x'... O que é que ele é exactamente, de onde vem, com que resultado, etc... Essas coisas. A minha dúvida se calhar esta na forma como eu vejo o foldr. Por exemplo, eu vejo o foldr como aplicar a função (1º argumento) a cada elemento da lista (3º argumento) e o 0 (2º argumento) é como se fosse um elemento inicial, caso a função esteja vazia, para que o foldr não dê nenhum tipo de erro.

Mas eu sei que isto não é o mais correcto, mas não estou a conseguir ver de outra maneira...

Até a este momento, eu via o foldr apenas como uma função que servia para "concatenar" coisas, mas estou agora a ver que não tem nada a ver :X

Será que alguém me pode explicar o que está aqui acontecer como se eu fosse muito burro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora