select: Give the select(2) POSIX function a simple STM interface

[ bsd3, library, system ] [ Propose Tags ]

While tinkering on a project, I frequently found myself having to make FFI calls to select(2). This package is an attempt reduce the boilerplate I needed to do that. While at it, I took the opportunity to have what select returns put in a TMVar.

The package has three parts:

just wraps select.
and Control.Concurrent.MVarIO put the return value of IO actions into a TMVar or an MVar, respectively.
defines functions that give you the return value of whatever finishes first of an IO action and an STM operation.
and System.Posix.IO.Select.MVar do the above for the special case select.

NOTE: I feel I'm occupying prime namespace realestate with a package name like select. I'll happily let myself be chased away if anybody else wants to use this package name. Let me know.

NOTE 2: The vector dependency comes from me not spending time figuring out how to pass lists of data to C without first turning them into vectors. It'll probably disappear soon.

CAVEAT: I'm not an experienced Haskeller (as you can tell from note 2), and this is my first foray into FFI in general. Use with caution.


Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


  • No Candidates
Versions [RSS] 0.1, 0.2, 0.2.1, 0.3, 0.4,
Dependencies base (>=4 && <5), stm, vector [details]
License BSD-3-Clause
Copyright 2012 Gard Spreemann
Author Gard Spreemann
Maintainer Gard Spreemann <>
Category System
Home page
Uploaded by GardSpreemann at 2012-07-28T12:58:49Z
Distributions NixOS:
Reverse Dependencies 3 direct, 2 indirect [details]
Downloads 5306 total (23 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]