Haskell - O que torna o 'main' único?

Com este código:

main :: FilePath -> FilePath -> IO ()
main wrPath rdPath = do x <- readFile rdPath
                        writeFile wrPath x

Eu tenho o seguinte erro:

Couldn't match expected type 'IO t0'
            with actual type 'FilePath -> FilePath -> IO()

Mas o arquivo é compilado corretamente quando altero o nome de 'main' para outra cois

O que há de tão único no main e por que seu tipo precisa serIO t0?

questionAnswers(4)

yourAnswerToTheQuestion