1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

foldr

Discussão em 'Programação' iniciada por neutral, 6 de Dezembro de 2007. (Respostas: 2; Visualizações: 604)

  1. neutral

    neutral Power Member

    Alguem me pode explicar como aplicar esta função em haskell? Sou iniciante e não percebo bem

    obrigado
     
    Última edição: 6 de Dezembro de 2007
  2. Baderous

    Baderous Banido

    foldr é uma função de ordem superior, isto é, recebe uma função como parâmetro.

    Código:
    foldr :: (a -> b -> b) -> b -> [a] -> b
    foldr f z [] = z
    foldr f z (x:xs) = f x (foldr f z xs)
    Recebe uma função (a -> b -> b), o resultado da função no caso da lista ser vazia (b), a lista a utilizar ([a]) e dá o resultado. No foldr, a associatividade dos elementos durante a execução da função é feita à direita.

    Exemplos:

    Código:
    foldr (+) 0 [1,2,3] => 1+(2+(3+0))
    foldr (*) 1 [1,2,3] => 1*(2*(3*0))
    
    somaLista l = foldr (+) 0 l
    multLista l = foldr (*) 1 l
    and bs = foldr (&&) True bs
    concat ls = foldr (++) [] ls
     
  3. neutral

    neutral Power Member

    obrigado ;) . também sou de lei por isso tenho haskell :P
     

Partilhar esta Página