
#8088: Disposable types language extension ----------------------------------------------+---------------------------- Reporter: schyler | Owner: Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: Keywords: | Operating System: Architecture: Unknown/Multiple | Unknown/Multiple Difficulty: Moderate (less than a day) | Type of failure: Blocked By: | None/Unknown Related Tickets: | Test Case: | Blocking: ----------------------------------------------+---------------------------- The disposable types language extension would serve as a way of allowing the garbage collector to clean up things which require destroying handles, closing resources, etc to prevent resource exhaustion in code (even if exceptions occur) without adding transformer overhead like ResourceT. Consider the following example: {{{ {-# LANGUAGE DisposableTypes #-} class Dispose t where dispose :: t -> IO () instance Dispose SockHandle where dispose = disconnect }}} When the `SockHandle` is collected, the garbage collector runs its `dispose` method (and it's automatically disconnected and cleaned up). Similar principles could be applied to a file handle, shared memory etc. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8088 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler