David Feuer
David Feuer
@gereeter, we in `containers` land would love if you'd pick this back up.
There's a lot of relevant discussion in [Reflection Without Remorse: Revealing a hidden sequence to speed up monadic reflection](https://okmij.org/ftp/Haskell/zseq.pdf), though the paper goes in a different direction.
Hrm... affine use is putting too strong a point on it. It's perfectly fine to `concat . replicate n` a `DList`. But they should generally only be "inspected" once.
My opinion probably shouldn't hold too much weight, but I don't really see the need to have a `Default` class at all. Is it really too much trouble to define...
@ekmett, @RyanGlScott, I believe this should be considered a release blocker.
@aaronvargo, I would appreciate your input on this. Also: I'm not totally convinced that we win anything by making `collect1` a class method rather than just a function. Do you...
Please **DO NOT SQUASH**. I've broken this PR into one commit that creates `Data.Functor.Rep.Internal` and a separate one that actually makes substantive changes.
What's the right way to fix things so git recognizes that first thing as a move? I don't want to get all the `git blame` for the whole module.
One potentially controversial point: the new `Functor` instance for `Co` will be bad if the `Representable` instance doesn't define `cotraverseMap1`.
(But I think that's okay; `Co` is presumably mostly for `DerivingVia`, and people are free not to use it if they don't want it.)