
Axel Simon wrote:
Hm, ok then I see a good reason not to use := . I think it's better to stick to Haskell 98 features. But I don't feel very strongly about this.
Well, but I do. :-) Granted, ":=" looks better than "=:", but losing H98 compliance just for a small cosmetic thing is rather bad IMHO. After a look at Yahu/GIO I decided to use set/get/=: in 'HOpenGL: The Next Generation' :-) instead of the current rather ad-hoc stuff inherited from C. OpenGL is a state machine and uses state variables rather extensively, and these map very nicely to Haskell using the functions above. The only concept Yahu/GIO is missing is the distinction between read-only, write-only, and "normal" state variables, so I've adapted it slightly, see: http://cvs.haskell.org/cgi-bin/cvsweb.cgi/fptools/libraries/OpenGL/Graphics/Rendering/OpenGL/GL/StateVariable.hs?rev=1.1&content-type=text/x-cvsweb-markup My question is: The attribute/property/state variable pattern seems to be a more universal concept than I initially thought, so it might be a good idea to have support for this in the standard libraries. But exactly how is not completely clear to me, e.g. GIO uses an additional type variable (for the kind of widget). Any ideas and/or suggestions? OK, modules like this look rather obvious and small, so why should we standardize it at all? Linguistic abstraction! Having a set of standard functions/operators available for a common task is always a good idea, it makes other people's programs (and old ones written by oneself :-) much easier to read. Embedding a domain specific language into Haskell by defining myriads of home-grown operators is often a fine way of obfuscating a program (Prolog programs are often not much better in this respect, BTW).
If := is going to be a reserved symbol one day, then we should perhaps not use it. [...]
I wasn't aware of that, but it's just another reason... Cheers, S.