The unamb package

[ Tags: 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.


[Skip to Readme]

Properties

Versions 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
Dependencies base (>=4), checkers, QuickCheck [details]
License BSD3
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 Tue Jan 20 20:05:56 UTC 2009 by ConalElliott
Distributions FreeBSD:0.2.5, NixOS:0.2.5
Executables test-unamb
Downloads 4863 total (317 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI

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

Maintainer's Corner

For package maintainers and hackage trustees


Readme for unamb-0.1.9

[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