On Tue, Jan 27, 2015 at 3:47 PM, Edward Kmett <ekmett@gmail.com> wrote:
We can make up our own combinators for putting these things together, but we can't use (.) from the Prelude or even from Control.Category.

Is this the only reason not to have a data type? (Sorry, I wasn't totally following the GADT-nastics!) That is, if, for a moment, we just assume a different operator for composing lenses, then will a data/newtype work?

Now, if (as I understand it), under IV (assuming it work), it works for lens libraries iff they use a data/newtype for the lens (so that their instance is the instance for ->, I'm guessing)...... then, I say using a different operator for compose is a small price to pay. (Well, as I said before, I'd actually prefer a different compose operator!)

Mind you, I might be totally mis-understanding the arguments and reasoning!