unamb 0.2.5 → 0.2.7
raw patch · 2 files changed
+16/−9 lines, 2 filesdep ~base
Dependency ranges changed: base
Files
- src/Data/Unamb.hs +4/−4
- unamb.cabal +12/−5
src/Data/Unamb.hs view
@@ -35,7 +35,7 @@ , BothBottom ) where -import Prelude hiding (catch)+import Prelude import System.IO.Unsafe import Control.Monad.Instances () -- for function functor import Control.Concurrent@@ -216,9 +216,9 @@ -- This version kills descendant threads when killed, but does not restart -- any work if it's called by unamb. That code is left in unamb. -race a b = mask_ $ do+race a b = mask $ \restore -> do v <- newEmptyMVar- let f x = forkIO $ putCatch (mask_ x) v+ let f x = forkIO $ putCatch (restore x) v ta <- f a tb <- f b let cleanup = throwTo ta DontBother >> throwTo tb DontBother@@ -226,7 +226,7 @@ loop t = do x <- takeMVar v case x of Nothing -> loop (t-1) Just x' -> return x'- mask_ (loop (2 :: Int) `finally` cleanup)+ loop (2 :: Int) `finally` cleanup -- A thread can bottom-out efficiently by throwing that exception.
unamb.cabal view
@@ -1,17 +1,20 @@ Name: unamb-Version: 0.2.5-Cabal-Version: >= 1.2+Version: 0.2.7+Cabal-Version: >= 1.6 Synopsis: Unambiguous choice Category: Concurrency, Data, Other Description:- unamb contains the "unambiguous choice" operator "unamb", which+ 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. .+ Note: unamb correctly implements lub (least upper bound) for flat+ types only. I suggest using the lub package instead of unamb.+ . Project wiki page: <http://haskell.org/haskellwiki/unamb> .- © 2008-2012 by Conal Elliott; BSD3 license.+ © 2008-2014 by Conal Elliott; BSD3 license. . Contributions from: Luke Palmer, Spencer Janssen, Sterling Clover, Bertram Felgenhauer, Peter Verswyvelen, Svein Ove Aas, and Edward Kmett.@@ -20,10 +23,14 @@ Maintainer: conal@conal.net Homepage: http://haskell.org/haskellwiki/unamb Package-Url: http://code.haskell.org/unamb-Copyright: (c) 2008-2012 by Conal Elliott+Copyright: (c) 2008-2014 by Conal Elliott License: BSD3 Stability: experimental build-type: Simple++source-repository head+ type: git+ location: git://github.com/conal/unamb.git Flag test Description: Enable testing