Migrations
Looking at their last parameter, migrations are always functions of the following form:
A -> A
Migrations are basically "mutations" on objects. Migrations take an object structure as their last parameter and return a new object of the same shape, but with some mutations performed on it.