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

marco_iku

Manipular texto de um ficheiro

4 mensagens neste tópico

Boa tarde

Quero abrir um ficheiro para retirar o seu conteúdo e trabalhar com este.

lerFile :: IO (String)
lerFile = do 
                putStrLn "Localizacao do ficheiro:"
                local <- getLine
                h <- openFile local ReadMode
                textoFicheiro <- hGetContents h
                return textoFicheiro

O problema é que quando quero utilizar esta função para trabalhar com conteudo do ficheiro (textoFicheiro) dá-me sempre erro por causa dos tipos. Isto criar uma variável do tipo IO String e eu preciso de uma do tipo String.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A única forma de extrair (correctamente) o conteúdo de um Monad é utilizando o operador bind '>>=' ou a notação 'do' que faz o mesmo de uma forma mais legível.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já o fizeste na tua função.

getLine :: IO String
local :: String

Ao utilizares o do para trabalhares com Monads, o operador <- extrai do Monad que se encontra à sua direita o seu conteúdo e armazena-o na variável que está à sua esquerda.

Com o bind seria:

 getLine >>= (\local -> ...)

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