framework for composing monads?

Marcin 'Qrczak' Kowalczyk
18 Feb 2001 12:05:13 GMT

Sun, 18 Feb 2001 15:01:18 +1100, Manuel M. T. Chakravarty <> pisze:

> Re (a): Usually, you have to process command line options
> etc, which also provides a natural place for
> initialization.  See, eg, the `init' function for Gtk+HS
> Clean up should really be handled by a finaliser that is
> automatically invoked before program termination,

Shutdown can be provided in the form similar to
    Socket.withSocketsDo :: IO a -> IO a
so that it still can be forgotten, but only together with
initialization, and the shutdown code may use some handles
created by initialization without using global variables.

If the initialization produces a handle which is used for all
subsequent operations (i.e. the C interface does not rely on the
global state), it can be passed as an argument to the argument to this
function and used explititly each time - but this time wrapping the
whole thing in a monad makes more sense, as it saves the programmer
from passing the handle explicitly.

 __("<  Marcin Kowalczyk *
  ^^                      SYGNATURA ZASTĘPCZA