Functors.jl provides tools to express a powerful design pattern for dealing with large/ nested structures, as in machine learning and optimization. For large machine learning models, it can be cumbersome or inefficient to work with parameters as one big, flat vector, and structs help manage complexity; but it is also desirable to easily operate over all parameters at once, e.g. for changing precision or applying an optimizer update step.