[Haskell] Dúvida: Não entendo como está a funcionar a função takeWhile - Haskell - Portugal-a-Programar
Por Nazgulled, 3 de Novembro de 2006 em Haskell
Numa determinada aula, estivemos a refazer funções que já existem no Haskell para termos prática nestas coisas e vermos como elas funcionam... No entanto, em algumas delas (que usam assinaturas parecidas) eu não entendi certas partes delas e gostava de ficar esclarecido em como é que elas estão a funcionar. Por exemplo, a seguinte função:
takeWhile c (h:t)
| c h = h:takeWhile c t
O que eu não percebo o que é e como funciona nesta função, são as partes que se encontram coloridas e sublinhadas. A que também está a negrito é que não captei mesmo que condição é e como é que funciona :S
Podem explica-las o que são e como funcionam?
ya tb dei isso hoje... nao percebi essa cena... a prof. nao sabe explicar...
ja agora Nazgulled, és de LEI?
a função takeWhile recebe uma função como argumento (uma função que recebe um valor do tipo a e devolve um Bool), para além de uma lista.
logo em takeWhile c (h:t) o c é uma função e o h é um elemento de uma lista. logo nós podemos fazer c h, ou seja, aplicar a função c ao elemento h.
P.S.: em vez de takeWhile c (h:t) | c h =... façam takeWhile funcao (h:t) | funcao h =.... talvez ajude a compreender melhor como funciona (visto que o c vai representar uma função).
@Onumis
A prof? Quem é que tens como prof? A mim quem me deu isto foi o JBB e ele explica bem, eu é que já tava a ficar um bocado farto de estar na aula e não tinha o portátil comigo para ir exprimentado o que tava a ser feito no quadro. E sim, sou de LEI.
Mais uma vez obrigado pela ajuda que me tens dado em Haskell... Realmente a olhar po código n estava a perceber, mas com a tua explicação e exprimentado aqui no ghci, já captei o que significa aquilo tudo.