
Henning Thielemann wrote:
Translated to the tuple issue, I use only one function of type field1 :: f -> t -> (f,t) which is a combination of 'get' and 'set'. Using this function you can implement a generic 'set', 'get', and 'update'. Of course, you can argue that it is bad style to put the distinct 'set' and 'get' functionalities into one function.
I like that style. It reminds me of the zipper pattern, of accessors (or something like that). ...which is more important for more complicated things (Maps?) (Uniplate.) I don't know when I'd want to use a function polymorphic in tuple size - _personally_ I'd rather stick to simpler types and ... probably pattern-matching. It's too bad selectors via pattern-matching take a bit more syntax than (,,this,) unless you're already in a pattern-match location... ( (_,_,this,_) ). Large tuples whose size can change might be better represented with record syntax. So I'm not the target audience of this library :) Isaac