# programming languages ​​- Generalization of functors to other types of data?

The functors in category theory, as well as in its application to functional programming, can be seen as a sort of "structured" function: Either two sets $$A, B$$rather than simply having a function $$f: A to B$$we have a functor $$F$$ which contains $$f$$but aditionellement also matches the morphisms $$A$$ to morphisms on $$B$$ (that is, cards not only $$A$$ at $$B$$ but also maps "structure on $$A$$"to" structure on $$B$$").

In the theory of functional programming category, objects $$A, B$$ are types and morphisms are functions $$A to B$$ between the types. This means that map types of functors $$A, B$$ to other types $$X, Y$$ and functions of the map $$A to B$$ to the functions $$X to Y$$. Functional programming functors can therefore be seen as a mapping between data types but also to map the functional structure to these data types.

My thought was this: in the context of object-oriented programming, there are really more types of structure on data types than mere functions between them. For example, given two types $$Int$$ and $$Bool$$, we can not only define functions $$f: Int to Bool$$but also things like $$p: Int times Bool$$, or more complex data types such as classes with private component classes.

Is there a generalization of functors in "data-type mappings that also preserve the structure", where it does not have to be functorial? I wonder in particular if such a concept is used in the analysis of programming languages.