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

RSFalcon7

[Resolvido] Problemas com IO a -> a

7 mensagens neste tópico

Boas... Feliz 2009 a todos javascript:void(0);

estou com um problema numa funcao q deveria ler um ficheiro e devolver par, mas não sei como tirar o IO do tipo....

a funcao:

carregarjogo = do
               putStr "Nome do Jogo::"
               nome <- getLine
               conteudo <- readFile (nome++".zuka")
               return ((read conteudo) :: (Casa,Tabuleiro))

o erro

*Segmentos> fst carregarjogo

<interactive>:1:4:
   Couldn't match expected type `(a, b)'
         against inferred type `IO (Casa, Tabuleiro)'
   In the first argument of `fst', namely `carregarjogo'
   In the expression: fst carregarjogo
   In the definition of `it': it = fst carregarjogo
*Segmentos> 

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É possível passar um valor de IO a para a, através da função unsafePerformIO, mas não recomendo a sua utilização (principalmente em trabalhos académicos).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lê a documentação da função. Adicionalmente, num trabalho académico, a utilização da função normalmente significa que não sabes usar monads correctamente.

A maneira de dar a volta a isso é só chamar essa função dentro de funções monadicas (do tipo IO ...). Num programa bem estruturado, isso é perfeitamente possível.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o objectivo é guardar o jogo, para depois continuar a jogar....

mas se o readFile devolve um  IO String ;), como eu faço para recuperar o jogo?  :wallbash:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então, na tua linha

conteudo <- readFile (nome++".zuka")

estás a recuperar o jogo.

O teu conteudo vai ser a String com o teu jogo. A não ser que recuperar o jogo refiras a outra coisa....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

putzz....

obrigado pela ajuda, agora que eu vi o meu erro. que burrice...

Obrigadão, ja funciona :thumbsup:

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