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!

questionAnswers(2)

yourAnswerToTheQuestion