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?



enter image description here

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


enter image description here


enter image description here

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

  • 3
    $\begingroup$ Despite the interest, to explain 155 symbols in a single answer seems rather broad to me. I wonder if the scope can be focused? $\endgroup$
    – Michael E2
    Commented Jan 2, 2016 at 15:08
  • 2
    $\begingroup$ 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. $\endgroup$
    – C. E.
    Commented Jan 2, 2016 at 15:47
  • 1
    $\begingroup$ It can be tricky to figure this out: I mean, who would think TypeSystem`RandomUtils`PackagePrivate`$MaleNames would be a list of female names and a TypeSystem`RandomUtils`PackagePrivate`$FemaleNames would be a list of male names?! $\endgroup$
    – QuantumDot
    Commented Jan 3, 2016 at 13:31