learning about functors