[Haskell-cafe] the Haskell "with" "pattern"?

Jeremy Shaw jeremy at n-heptane.com
Wed Aug 6 03:25:41 EDT 2008


At Wed, 6 Aug 2008 00:43:55 -0500,
Galchin, Vasili wrote:
> 
> [1  <multipart/alternative (7bit)>]
> [1.1  <text/plain; ISO-8859-1 (7bit)>]
> Hello,
> 
>     1) Is there a common assumed semantics across all of the Haskell "with"
> things? withString? withData?

A vague semantic is that some resource is acquired, used, and then released.

>     2) If the answer to 1) is yes, then does this imply some kind of
> polymorphism? Couldn't "with" be "reduced" to a higher order function then
> ??

I think Control.Exception.bracket is used to implement many, but not
all, of the with* functions.

> newThing :: IO a
> newThing = ...

> destroyThing :: a -> IO b
> destroyThing ...

> withThing :: (Thing -> IO a) -> IO a
> withThing useThing = bracket newThing destroyThing useThing

I have not fully answered either of your questions, but hopefully this
is a start.

j.


More information about the Haskell-Cafe mailing list