Jhowl Posted October 3, 2012 at 09:23 PM Report #477638 Posted October 3, 2012 at 09:23 PM (edited) Olá Galera, estou começando a utilizar haskell, então só novo nesta linguagem e cheio de duvidas. Vamos - lá estou tentando tirar uma média em haskell utilizando uma lista e está ocorrendo um erro que não estou conseguindo localizar, vou utilizar a recursão, depois vou fazer tentativa de fazer a retirando os extremos. Isto foi oque eu consegui criar: extremos ::[int] -> Int -> float extremos []_ = [] extremos y (a:xs) |div a y |otherwise = a:extremos (a+xs) (y+1) está apresentando o seguinte erro: ERROR file:.\Media menos os extremos.hs:5 - Syntax error in declaration (unexpected `|') Agradecia se me pudessem ajudar. vlw Edited October 4, 2012 at 09:12 AM by Baderous geshi
Baderous Posted October 4, 2012 at 09:16 AM Report #477689 Posted October 4, 2012 at 09:16 AM Tens aí muita coisa que não bate certo. 1) O tipo da função é [int] -> Int -> Float (com letra maiúscula no Float); 2) Logo no caso base estás a dizer que o resultado é uma lista vazia, o que não bate certo com Float; 3) No caso recursivo estás a dizer que o 2º parâmetro é uma lista, o que não bate certo com o tipo Int; 4) | div a y não é uma instrução válida; 5) No otherwise estás outra vez a dizer que o tipo final é uma lista e a forma como constróis o resultado final não faz qualquer sentido.
Miguel Correia Posted October 4, 2012 at 02:14 PM Report #477762 Posted October 4, 2012 at 02:14 PM Se tiveres a programar em windows no bloco de notas da pelo menos um espaço antes das guardas senão ele assume que é a definição da funçao. Um espaço , tab nao serve
Jhowl Posted October 5, 2012 at 07:12 PM Author Report #477918 Posted October 5, 2012 at 07:12 PM (edited) Usei essa função para tirar média da lista media ::Float -> Float -> Float media x y = sum[x..y]/y Alguem saberia alguma recursiva? Edited October 5, 2012 at 07:12 PM by Jhowl
Baderous Posted October 5, 2012 at 08:27 PM Report #477921 Posted October 5, 2012 at 08:27 PM Isso é a média dos valores x e y?
Jhowl Posted October 9, 2012 at 08:18 PM Author Report #478487 Posted October 9, 2012 at 08:18 PM É média de uma lista pré definida exemplo: [1..100]/100
pwseo Posted October 10, 2012 at 07:17 AM Report #478519 Posted October 10, 2012 at 07:17 AM Jhowl, Isso não funciona se eu fizer, por exemplo media 50 100 porque o teu código vai somar todos os valores de 50 a 100 (51 valores ao todo) e dividir o resultado final por 100 em vez de 51.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now