air 2011.7.25 → 2011.10.19
raw patch · 2 files changed
+20/−1 lines, 2 files
Files
- air.cabal +2/−1
- src/Air/Data/Managed.hs +18/−0
air.cabal view
@@ -1,5 +1,5 @@ Name: air-Version: 2011.7.25+Version: 2011.10.19 Build-type: Simple Synopsis: air Description: An alternative Haskell Prelude library.@@ -45,3 +45,4 @@ , Air.Data.Record.SimpleLabel.TH , Air.Data.Default , Air.Data.Monoid+ , Air.Data.Managed
+ src/Air/Data/Managed.hs view
@@ -0,0 +1,18 @@+module Air.Data.Managed where++import Air.Data.Default++class Managed a where+ initialize :: IO (Maybe a)+ initialize = return Nothing+ + destroy :: a -> IO ()+ destroy = const (return ())+ + with_managed_object :: (a -> IO ()) -> IO ()+ with_managed_object f = do+ maybe_x <- initialize+ case maybe_x of+ Just x -> f x >> destroy x+ Nothing -> return ()+