Monomorphic functor, foldable, traversable and "monad". Use Control.Lens.Traversal instead of this.