Right now we have two instances that give you an ApplicativeAsk[F, E] if there's a MonadState[F, E] instance in scope, and a FunctorTell[F, L] instance when MonadState[F, L] is in scope.
These instances are probably useful and lawful, but it still doesn't quite feel right for me.
I kind of expect the environment parameter E in ApplicativeAsk to be immutable and never change, whereas if I have a StateT[F, E], it can change with each flatMap.
I'm not sure if this is a problem or not, but wanted to see what others think about this. :)