Re: [Haskell-cafe] Handling exceptions or gracefully releasing resources

2013-01-30 Thread Felipe Almeida Lessa
Everything that Johan Tibell said + you may be interested in the
resourcet package [1] (which is used by conduit to handle resources).

Cheers,

[1] http://hackage.haskell.org/package/resourcet

On Tue, Jan 29, 2013 at 8:59 PM, Thiago Negri evoh...@gmail.com wrote:
 `Control.Exception.bracket` is a nice function to acquire and release a
 resource in a small context.

 But, how should I handle resources that are hold for a long time?

 Should I put `Control.Exception.finally` on every single line of my
 finalizers?
 What exceptions may occur on an IO operation?
 Every IO function has the risk of throwing an exception?

 Thanks,
 Thiago.


 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe




-- 
Felipe.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Handling exceptions or gracefully releasing resources

2013-01-30 Thread Thiago Negri
Felipe, I'm trying to use your Hipmunk package. :)
The resources I need to keep around are the objects used for the simulation.
Do you recomend using resourcet to handle this or something else?

Thanks.


2013/1/30 Felipe Almeida Lessa felipe.le...@gmail.com

 Everything that Johan Tibell said + you may be interested in the
 resourcet package [1] (which is used by conduit to handle resources).

 Cheers,

 [1] http://hackage.haskell.org/package/resourcet

 On Tue, Jan 29, 2013 at 8:59 PM, Thiago Negri evoh...@gmail.com wrote:
  `Control.Exception.bracket` is a nice function to acquire and release a
  resource in a small context.
 
  But, how should I handle resources that are hold for a long time?
 
  Should I put `Control.Exception.finally` on every single line of my
  finalizers?
  What exceptions may occur on an IO operation?
  Every IO function has the risk of throwing an exception?
 
  Thanks,
  Thiago.
 
 
  ___
  Haskell-Cafe mailing list
  Haskell-Cafe@haskell.org
  http://www.haskell.org/mailman/listinfo/haskell-cafe
 



 --
 Felipe.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Handling exceptions or gracefully releasing resources

2013-01-30 Thread Felipe Almeida Lessa
AFAIR, the only object that you need to be careful with is the Space
[1], everything else is garbage collected.  You could put the Space in
a ResourceT, but only if it ran on its own thread (as soon as a block
of ResourceT finishes, everything is deallocated, so you wouldn't be
able to follow the approach taken by HipmunkPlayground).

Cheers,

[1] 
http://hackage.haskell.org/packages/archive/Hipmunk/5.2.0.10/doc/html/Physics-Hipmunk-Space.html#v:freeSpace

On Wed, Jan 30, 2013 at 11:15 AM, Thiago Negri evoh...@gmail.com wrote:
 Felipe, I'm trying to use your Hipmunk package. :)
 The resources I need to keep around are the objects used for the simulation.
 Do you recomend using resourcet to handle this or something else?

 Thanks.


 2013/1/30 Felipe Almeida Lessa felipe.le...@gmail.com

 Everything that Johan Tibell said + you may be interested in the
 resourcet package [1] (which is used by conduit to handle resources).

 Cheers,

 [1] http://hackage.haskell.org/package/resourcet

 On Tue, Jan 29, 2013 at 8:59 PM, Thiago Negri evoh...@gmail.com wrote:
  `Control.Exception.bracket` is a nice function to acquire and release a
  resource in a small context.
 
  But, how should I handle resources that are hold for a long time?
 
  Should I put `Control.Exception.finally` on every single line of my
  finalizers?
  What exceptions may occur on an IO operation?
  Every IO function has the risk of throwing an exception?
 
  Thanks,
  Thiago.
 
 
  ___
  Haskell-Cafe mailing list
  Haskell-Cafe@haskell.org
  http://www.haskell.org/mailman/listinfo/haskell-cafe
 



 --
 Felipe.





-- 
Felipe.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Handling exceptions or gracefully releasing resources

2013-01-29 Thread Thiago Negri
`Control.Exception.bracket` is a nice function to acquire and release a
resource in a small context.

But, how should I handle resources that are hold for a long time?

Should I put `Control.Exception.finally` on every single line of my
finalizers?
What exceptions may occur on an IO operation?
Every IO function has the risk of throwing an exception?

Thanks,
Thiago.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Handling exceptions or gracefully releasing resources

2013-01-29 Thread Johan Tibell
Hi,

The pattern is essentially the same as in imperative languages; every
allocation should involve a finally clause that deallocates the
resource.

On Tue, Jan 29, 2013 at 2:59 PM, Thiago Negri evoh...@gmail.com wrote:
 Should I put `Control.Exception.finally` on every single line of my
 finalizers?

I'm not sure what you're asking here. If your finally clause tries to
call close, you don't have to catch exceptions raise by close (what
would you do with them anyway).

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe