data-lens — охренительная штука, единственный минус в том, что стандартные State комбинаторы работают почему-то не над MonadState m => m, а над StateT