Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Type-safe file handling

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 System
Octocat-spinner-32 LICENSE
Octocat-spinner-32 NEWS
Octocat-spinner-32 README.markdown
Octocat-spinner-32 Setup.hs
Octocat-spinner-32 safer-file-handles.cabal
README.markdown

This package adds three safety features on top of the regular System.IO file handles and operations:

  • Regional file handles. Files must be opened in a region. When the region terminates all opened files are automatically closed. The main advantage of regions is that the handles to the opened files can not be returned from the region which ensures no I/O with closed files is possible.

  • Explicit IOModes. The regional file handles are parameterized by the IOMode in which they were opened. All operations on handles explicitly specify the needed IOMode. This way it is impossible to read from a write-only handle or write to a read-only handle for example.

  • Type-safe filepath creation and manipulation using the [pathtype] package.

The primary technique used in this package is called "Lightweight monadic regions" which was invented by Oleg Kiselyov and Chung-chieh Shan.

This technique is implemented in the [regions] package which is re-exported from safer-file-handles.

See the safer-file-handles-examples package for examples how to use this package:

git clone git://github.com/basvandijk/safer-file-handles-examples.git

See the safer-file-handles-bytestring and safer-file-handles-text packages for ByteString / Text operations on regional file handles.

[pathtype]: http://hackage.haskell.org/package/pathtype [regions]: http://hackage.haskell.org/package/regions

Something went wrong with that request. Please try again.