Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #57 da revista programar. Faz já o download aqui!

RSFalcon7

[Resolvido] Problemas com IO a -> a

Mensagens Recomendadas

RSFalcon7    0
RSFalcon7

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    309
Rui Carlos

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
RSFalcon7    0
RSFalcon7

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:

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Betovsky    2
Betovsky

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita a nossa Política de Privacidade