how to compose 2 functors