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

© 2008 by Conal Elliott; BSD3 license.

Contributions from: Luke Palmer, Spencer Janssen, Sterling Clover, Bertram Felgenhauer, Peter Verswyvelen, and Svein Ove Aas. Please let me know if I've forgotten to list you.


[Skip to Readme]
Versions [faq] 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 (>=4 && <4.5), checkers, QuickCheck [details]
License BSD-3-Clause
Copyright (c) 2008 by Conal Elliott
Author Conal Elliott
Maintainer conal@conal.net
Revised Revision 1 made by HerbertValerioRiedel at Sat Jan 5 18:42:08 UTC 2019
Category Concurrency, Data, Other
Home page http://haskell.org/haskellwiki/unamb
Uploaded by ConalElliott at Fri May 29 23:32:32 UTC 2009
Distributions FreeBSD:0.2.5, NixOS:0.2.7
Executables test-unamb
Downloads 9139 total (279 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Flags

NameDescriptionDefaultType
test

Enable testing

DisabledAutomatic

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

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for unamb-0.2

[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