# V10's TypeSystem - what are these function useful for? [closed]

The symbols in the TypeSystem context are clearly used for working with Datasets, but they seem powerful. I was hoping that someone could help explain how they work and is they are useful for anything in particular?

Needs["TypeSystem"]

?TypeSystem*


Some of them seem very very useful for synthesizing examples and fodder for testing functions:

RandomTime[]


RandomGraphics[]


But many others are more cryptic (e.g. ShallowConformsQ)...

• Despite the interest, to explain 155 symbols in a single answer seems rather broad to me. I wonder if the scope can be focused? – Michael E2 Jan 2 '16 at 15:08
• Would be interesting to see if anyone has found applications for the type system. As for the specific function ShallowConformsQ, one can deduce by running Needs["GeneralUtilities"]; PrintDefinitions[ShallowConformsQ] that it is a function that takes two arguments, a value (atomic, association or list) and a type, and then checks if they "conform". To explain what conforms means one also has to explain the type system. It is probably the case that if one learns the core of the type system well, it is possible to deduce what the rest of the functions do by using PrintDefintions. – C. E. Jan 2 '16 at 15:47
• It can be tricky to figure this out: I mean, who would think TypeSystemRandomUtilsPackagePrivate$MaleNames would be a list of female names and a TypeSystemRandomUtilsPackagePrivate$FemaleNames would be a list of male names?! – QuantumDot Jan 3 '16 at 13:31
• – Karsten 7. Aug 16 '16 at 6:10