Jump to content

Recommended Posts

Posted (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 by Baderous
geshi
Posted

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.

Posted (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 by Jhowl
Posted

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.

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.