@aksharvarma I was just yes-and-ing your post with what I think is the next step.
There's definitely categorical jargon, but that's how you fit the idea into 500 characters.
Basically every "container" type is recursive: some trivially [e.g. (a,a)] and some in much more interesting ways. Each of the "layers" is a (categorical) functor, the container is just a fixed-point (recursive self-call) of that functor.