packages feed

air 2011.7.25 → 2011.10.19

raw patch · 2 files changed

+20/−1 lines, 2 files

Files

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 ()+