Ir para o conteúdo
dardevil

Problemas de interaccao com utilizador

Mensagens Recomendadas

dardevil

Tenho este pedaco de codigo:

mainB :: IO(Float)
mainB = do
putStrLn "Por favor introduza um valor B: " 
x <- getLine
let b = read x::Float
if (b < 0) then putStrLn "Valor inferior a 0." 
else if (b > 4) then putStrLn "Valor superior a 4." 
else b

O problema e que esta a dar erro, e eu já ando com isto as voltas e não consigo encontrar o que esta mal.

Se alguem poder ajudar agradecia.

(Penso que a leitura dum Float esta correcto)

Cumprimentos.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Betovsky

Primeiro tens a indentação do código incorrecta. O 'else' tem de estar alinhado com o 'then' correspondente.

Segundo, a assinatura da função dizes que é IO Float. Mas em lado nenhum estás um devolver um IO Float.

- O 'b', terá de ser 'return b';

- O uso de putStrLn é do tipo IO () e não IO Float;


"Give a man a fish and he will eat for a day; Teach a man to fish and he will eat for a lifetime. The moral? READ THE MANUAL !"

Sign on a computer system consultant's desk

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.