According to the documentation:
SparseArrayis treated as a raw object by functions likeAtomQand for purposes of pattern matching.
Furthermore, they have specific functions to access and format subparts (Dimensions, ArrayRules, Normal, etc. ), though they also have an intricate internal structure. There is however little information on what exactly certain elements mean.
Some examples:
Normal@SparseArray[{2, 3, 4} -> {1, 1, 1}, {6}]
InputForm@SparseArray[{2, 3, 4} -> {1, 1, 1}, {6}]
{0, 1, 1, 1, 0, 0} SparseArray[Automatic, {6}, 0, {1, {{0, 3}, {{2}, {3}, {4}}}, {1, 1, 1}}]
x = SparseArray[{{i_, i_} -> 1, {3, 2} -> 2, {5, _} -> "x"}, {5, 4}, -1];
Normal@x
InputForm@x
{{1, -1, -1, -1}, {-1, 1, -1, -1}, {-1, 2, 1, -1}, {-1, -1, -1, 1}, {"x", "x", "x", "x"}}SparseArray[Automatic, {5, 4}, -1, {1, {{0, 1, 2, 4, 5, 9}, {{1}, {2}, {3}, {2}, {4}, {4}, {3}, {2}, {1}}}, {1, 1, 1, 2, 1, "x", "x", "x", "x"}}]
For example, what is the purpose of the Automatic at the first position and what other values can be used instead of it?