There is another important type that should be included in such lists — but is virtually always overlooked: functions — they are types, too. and in fact the compiler does see all types just as memory layouts, they are the same for it.
Now, like classes functions are reference types (that's why we have to prevent the retain circle manually if a closure (= applied function) is used as a callback in a class).
But a function can also return another function — or even a tuple of functions. This technique is referred to as "Partial Application". I have created "Khipu", an architecture based on Uncle Bob's "Clean Architecture" that uses partial applied functions for routing and storing. https://decodemeester.medium.com/khipu-rapid-and-sustainable-software-creation-in-swift-using-engineering-and-science-principles-312a933cce57?sk=8359f48cc06571e53de156db8cbc005c