safer-file-handles: Type-safe file handling

[ bsd3, library, monadic-regions, system ] [ Propose Tags ] [ Report a vulnerability ]

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. See:

http://okmij.org/ftp/Haskell/regions.html#light-weight

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 https://github.com/basvandijk/safer-file-handles-examples

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


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1, 0.2, 0.2.0.1, 0.3, 0.3.0.1, 0.4, 0.5, 0.6, 0.6.1, 0.7, 0.8, 0.9, 0.10, 0.10.0.1, 0.11
Change log NEWS
Dependencies base (>=4 && <4.5), base-unicode-symbols (>=0.1.1 && <0.3), explicit-iomodes (>=0.5 && <0.7), pathtype (>=0.0.1 && <0.6), regional-pointers (>=0.7 && <0.8), regions (>=0.11 && <0.12), transformers (>=0.2 && <0.3) [details]
License BSD-3-Clause
Copyright 2010-2011 Bas van Dijk
Author Bas van Dijk
Maintainer Bas van Dijk <v.dijk.bas@gmail.com>
Category System, Monadic Regions
Home page https://github.com/basvandijk/safer-file-handles/
Bug tracker https://github.com/basvandijk/safer-file-handles/issues
Source repo head: git clone git://github.com/basvandijk/safer-file-handles.git
Uploaded by BasVanDijk at 2011-09-23T10:10:47Z
Distributions
Reverse Dependencies 4 direct, 0 indirect [details]
Downloads 10122 total (27 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for safer-file-handles-0.11

[back to package description]

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.