[GUI] RE: GUI Library Task Force
Manuel M. T. Chakravarty
chak@cse.unsw.edu.au
Tue, 25 Sep 2001 23:30:43 +1000
"Simon Peyton-Jones" <simonpj@microsoft.com> wrote,
> [replying to the GUI list]
>
> I don't have a strong opinion myself -- I'm just advocating a little
> careful study, since Clean has a lot of experience.
Yes, definitely.
> It might be worth
> asking Peter Aachten for his advice/ideas. Invite him to join the
> list?
True - that might be a good idea.
> | * It integrates facilities for concurrent and distributed
> | programming (asynchronous communication via channels). I
> | still think, we can keep the GUI API and concurrency as
> | two orthogonal features. If you take these features out
> | and use IORefs instead of MVars, you are already quite
> | close to the model that we currently aim at.
>
> Definitely agree to keep them separate. But I do think the GUI
> API should perhaps conceal whether it's using IORefs or MVars,
> since in a concurrent system one will certainly want to use the latter.
The goal for the Haskell GUI is to conceal this *and* to use
neither of the two in the GUI library implementation.
That's a property that I can't yet see how it can be
realised with the Clean IO.
> | * After this, the main difference that remains is the
> | representation of GUI components as a vanilla data type
> | instead of opaque handles that do not make the structure
> | of the components explicit in the types (like the TupLS
> | does). From the paper, it wasn't clear to me how useful
> | that is for the application programmer.
>
> This is indeed the most significant feature. It has the merit
> that there is a data structure that acts as a description of the
> GUI, which has some conceptual clarity, for me anyway.
> Instead of building up a model in your head, there it is written down
> (you can presumably even print it out).
>
> Not so good when the GUI shape is changing -- I wonder how
> Clean does that.
Another problem is extensibility, as the data declaration,
eg, commits to the possible properties and supported
callbacks of a widget. After having used GTK+, where all
this is dynamically defined, this seems quite restrictive to
me.
But I completely agree with you. We need to take into
account all the experience that is out there. (It's little
enough anyway.)
Cheers,
Manuel