Wed May 30 13:21:40 EDT 2018
Structure preserving applicatives? (Zippable?)
Is there a way to constrain an applicative such that it is
structure-preserving, in the same way that fmap has to be?
E.g. List has a very annoying cross product Applicative. ZipList is
the way around that.
How to say I want it to be the same shape?
What is actually the constraint I'm making?
Maybe the more important question: Why am I using an applicative
functor in a way that this matters?
Edit: actually, in this case ('next' in Seq.hs), the only use can be
replaced by toList + zip.
In fixMem I still need to use liftA2.
But if it is in a monad, maybe application helps?
I don't understand why this is so hard to resolve. Why can't a
functor have a size and a canonical list representation?
I don't quite understand it.
ZipList is not an instance?
Maybe look at what ZipList is an instance of?
Maybe it is Alternative?
Which is a Monoid only if the containee is a monoid right?
List is also Alternative, so not what I'm looking for.
So basically, this is a little to dense.. For now I don't need a
solution. Errors against non-zipping applicatives will be caught at
So ZipList is actually "dirty" because (liftA2 f) is not total.
EDOT: Actually ziplists do truncate, so it is total.
The solution is probably to use Rep?