Haskell, através de sua biblioteca base, oferece maneiras diretas de verificar a existência de diretórios, principalmente usando o módulo System.Directory.
System.Directory
Para criar um arquivo temporário em Haskell, você pode usar a biblioteca temporary.
temporary
Saída esperada (depende do conteúdo do seu meuArquivo.txt).
meuArquivo.txt
Se você salvar isso como Args.hs e rodá-lo com runhaskell Args.hs um dois três, você terá o seguinte resultado.
Args.hs
runhaskell Args.hs um dois três
A Prelude padrão do Haskell oferece suporte elementar para escrever em arquivos usando as funções writeFile e appendFile do módulo System.IO.
writeFile
appendFile
System.IO
Em Haskell, escrever para stderr é direto com o módulo System.IO da biblioteca base.