In C, I can call open with O_CREAT and O_EXCL to create a new file if and only if there isn't currently one by that name. I haven't been able to find a way to do that in Haskell. I would prefer something friendly that provides a Handle, ideally with all the tricky exception handling done for me. (I don't necessarily expect it to be done for me correctly, but that's another story.)