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)...


closed as too broad by m_goldberg, Bob Hanlon, Michael E2, Simon Woods, Jens Jan 3 '16 at 19:01

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 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 Jan 2 '16 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. Jan 2 '16 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 Jan 3 '16 at 13:31