Add throwSTM :: Exception e => e -> STM a
authorBas van Dijk <v.dijk.bas@gmail.com>
Sun, 26 Sep 2010 18:18:24 +0000 (18:18 +0000)
committerBas van Dijk <v.dijk.bas@gmail.com>
Sun, 26 Sep 2010 18:18:24 +0000 (18:18 +0000)
Control/Monad/STM.hs
Control/Sequential/STM.hs

index 59da2a5..d7ab6c6 100644 (file)
@@ -31,6 +31,7 @@ module Control.Monad.STM (
        orElse,
        check,
 #endif
+        throwSTM,
         catchSTM
   ) where
 
index 7975d72..096ef5b 100644 (file)
@@ -4,7 +4,7 @@
 
 -- #hide
 module Control.Sequential.STM (
-       STM, atomically, catchSTM,
+       STM, atomically, throwSTM, catchSTM,
        TVar, newTVar, newTVarIO, readTVar, readTVarIO, writeTVar
     ) where
 
@@ -50,6 +50,13 @@ atomically (STM m) = do
 #endif
 
 #ifdef BASE4
+throwSTM :: Exception e => e -> STM a
+#else
+throwSTM :: Exception -> STM a
+#endif
+throwSTM = STM . const . throwIO
+
+#ifdef BASE4
 catchSTM :: Exception e => STM a -> (e -> STM a) -> STM a
 #else
 catchSTM :: STM a -> (Exception -> STM a) -> STM a