archive – Creating files in Haskell


I wanted to write my program's output straight to a file. When I ran the code, it automatically generated a file with the outputs of this code instead of printing them to the screen.

A simple example:

func =  do
writeFile "file.txt" show(calc)
calc = do return (1+1)

I don't even know if that's possible. I'm new to Haskell and I still don't know how to use files.


You must use the function WriteFile to overwrite or appendfile to add at the end, as described in section 7.1 of the Haskell Report .

Fixing your example (and making the types explicit):

func :: IO ()
func = writeFile "file.txt" (show calc)

calc :: Integer
calc = 1 + 1


By writing writeFile "file.txt" show(calc) , you are calling writeFile with 3 arguments: "file.txt" , the show function, and the result of calc . The version above describes the correct behavior:

writeFile "file.txt" (show calc)

about calc

return in Haskell has a different meaning than most languages. It doesn't mean to return the value as a result of the function, but rather, " injecting a value into a monadic type ". To "return" a value as in a conventional language, simply write the value you want to return:

calc = 1 + 1
Scroll to Top