[GUI] get and set

Krasimir Angelov ka2_mail@yahoo.com
Mon, 17 Feb 2003 15:37:44 -0800 (PST)

--- Sven Panne <Sven.Panne@informatik.uni-muenchen.de>
> * It's a bit strange that a class with a "get"
> method is called
>    "Readable". "HasGetter" or "Gettable" would look
> more consistent to
>    me, but I'm not a native speaker.

   I just follow definitions given from Daan:

--- Daan Leijen wrote:
> Furthermore, you can still make a read/write 
> distinction by putting "get" and ":=" in classes as
> you do:
> class Readable attr where
>   get :: attr w a -> w -> IO a
> class Writable attr where
>   (=:) :: attr w a -> a -> Prop w

But maybe you are right HasGetter and HasSetter are
more adequate names. I don't have any preferences
about names.

> * A list version of (=:) is missing (called "set" in
> GIO/HOpenGL). But
>    even its type wouldn't be clear to me given this
> general version of
>    (=:). Hmmm...

With new implementation the HOpenGL's set function is
just well known sequence_ function from the standard
prelude. The GIO's set function correspond to setp
function from the Attr module.

> That was my intention. We should probably move this
> thread to the
> libraries list and continue discussion there (e.g.
> naming, where
> should the classes and instances reside in the
> module hierarchy,
> etc.).

Well! I expect future discussion in the
libraries@haskell.org. I propose to extract the type
classes in the new module (maybe
Control.Monad.Attributes) and after that to add 
attribute types along with their instances to modules 
which defines corresponding monads.

> Krasimir: Do you want to propose your Attr module
> there (without the
> GIO/HOpenGL stuff, of course)? It's your baby, after
> all...

Of course. The attributes can be used in much more 
places than in GIO and HOpenGL. The good example is 
HToolkit Draw monad. There are many functions like 
(get/set)PenColor, (get/set)PenSize which can be
replaced with attributes of type PenAttr.


Do you Yahoo!?
Yahoo! Shopping - Send Flowers for Valentine's Day