Unamb
From HaskellWiki
1 Abstract
unamb is a package containing the unambiguous choice operatorunamb
u
v
unamb u v
u
v
unamb u v
u
v
The agreement precondition ensures unamb's referential transparency.
For more info aboutunamb
unamb
Besides this wiki page, here are more ways to find out about unamb:
- Visit the Hackage page for library documentation and to download & install.
- Read related blog posts.
- Or install with cabal install unamb.
- Get the code repository: darcs get http://code.haskell.org/unamb.
See also the lub package, which extends unamb's usefulness with non-flat types.
2 Issues
As of version 0.1.1, unamb requires ghc 6.10 or better.
As of version 0.1.6, unamb correctly handles recursive termination of sub-efforts and automatic restarting, but only with the GHC RTS fixes that first appeared (stably, by my testing) in GHC HEAD version 6.11.20090115. The problems and solution can be found in a few places:
- Email thread: Problem with unamb -- doesn't kill enough threads
- Blog post: Smarter termination for thread racing
- Email thread: Black hole detection and concurrency
