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

Nazgulled

[Haskell] Dúvida: Não entendo como está a funcionar a função takeWhile

6 mensagens neste tópico

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 :: (a -> Bool) -> [a] -> [a]

takeWhile c (h:t)

              | c h = h:takeWhile c t

takeWhile _ _ = []


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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya tb dei isso hoje... nao percebi essa cena... a prof. nao sabe explicar...

ja agora Nazgulled, és de LEI?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

@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.

@Rui Carlos

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

quem me deu isso foi a Frade... so tenho teoricas com o jbb, mas nunca falou nisso...

e eu o meu numero de praxe e 30 - Granadas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei... n tenho ido a todas as teóricas, só quando não me dá sono... Mas és de LEI também?

E o teu nº e nome de praxe não me diz nada porque eu já não sou caloiro.

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