unamb: Unambiguous choice

[ bsd3, concurrency, data, library, other ] [ Propose Tags ]

unamb contains the "unambiguous choice" operator "unamb", which wraps thread racing up in a purely functional, semantically simple wrapper. Originally a part of Reactive, I moved unamb to its own package in order to encourage experimentation.

Project wiki page: http://haskell.org/haskellwiki/unamb

The module documentation pages have links to colorized source code and to wiki pages where you can read and contribute user comments. Enjoy!

© 2008 by Conal Elliott; BSD3 license.

Contributions from: Luke Palmer, Spencer Janssen


[Skip to Readme]

Modules

[Index]

Flags

Automatic Flags
NameDescriptionDefault
test

Enable testing

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.0, 0.0.1, 0.1.0, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.1.5, 0.1.6, 0.1.7, 0.1.8, 0.1.9, 0.2, 0.2.2, 0.2.3, 0.2.4, 0.2.5, 0.2.7
Dependencies base, checkers, QuickCheck [details]
License BSD-3-Clause
Copyright (c) 2008 by Conal Elliott
Author Conal Elliott
Maintainer conal@conal.net
Category Concurrency, Data, Other
Home page http://haskell.org/haskellwiki/unamb
Uploaded by ConalElliott at 2008-11-09T21:13:16Z
Distributions FreeBSD:0.2.5, NixOS:0.2.7
Reverse Dependencies 7 direct, 19 indirect [details]
Executables test-unamb
Downloads 15491 total (58 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 unamb-0.0.1

[back to package description]
unamb [1] contains the "unambiguous choice" operator "unamb" [2], which
wraps thread racing up in a purely functional, semantically simple
wrapper.  Given any two arguments u and v that agree unless bottom, the
value of unamb u v is the more terminating of u and v.  Operationally, the
value of unamb u v becomes available when the earlier of u and v does.
The agreement precondition ensures unamb's referential transparency.

unamb was originally a part of Reactive [3].  I moved it to its own
package in order to encourage experimentation.

Please share any comments & suggestions on the discussion (talk) page at
[1].

You can configure, build, and install all in the usual way with Cabal
commands.

  runhaskell Setup.lhs configure
  runhaskell Setup.lhs build
  runhaskell Setup.lhs install

References:

[1] http://haskell.org/haskellwiki/unamb
[2] http://conal.net/papers/simply-reactive
[3] http://haskell.org/haskellwiki/reactive