Haskell: inserindo todas as linhas de um arquivo em uma lista
Atualmente, estou trabalhando no projeto com Haskell e me deparei com alguns problemas. Eu devo ler e inserir em uma lista cada linha de um arquivo "dictionary.txt", mas não consigo fazê-lo. Eu tenho esse código:
main = do
let list = []
loadNums "dictionary.txt" list
loadNums location list = do
inh <- openFile location ReadMode
mainloop inh list
hClose inh
mainloop inh list = do
ineof <- hIsEOF inh
if ineof
then return ()
else do
inpStr <- hGetLine inh
inpStr:list
mainloop inh list
Ele deve receber todas as linhas (eu sei que ele recebe todas as linhas, pois a substituição de "inpStr: list" por "putStrLn inpStr" funciona corretamente, exibindo todas as linhas) e inseri-la em uma lista, mas eu recebo o seguinte erro :
Couldn't match expected type `IO' against inferred type `[]'
Provavelmente porque o hGetLine não é uma String, mas uma String de IO, que eu não tenho idéia de como manipular para obter uma string adequada que eu possa inserir na minha lista. Não tenho idéia de como isso pode ser resolvido ou qual é exatamente o problema, mas se alguém tiver alguma idéia de como inserir corretamente todas as linhas de um arquivo em uma lista, eu apreciaria.
Desde já, obrigado!