What is less obvious is that enlist is implicated in lists with missing items.
q)type (`one;`two;`three) / symbol vector
q)type (`one;::;`three) / mixed list
q)type (`one;;`three) / a -- projection?
q)(`one;;`three) ~ enlist[`one;;`three]
Is the missing item a generic null? No, a list with one or more missing items is a projection of enlist, and its rank is the number of missing arguments. We can apply and iterate it as any other projection.
q)(`one;;`three;;`five) . `two`four
the quick brown fox jumps
the quick brown cat jumps
the quick brown dog jumps
the crafty brown fox jumps
the crafty brown cat jumps
the crafty brown dog jumps
the cunning brown fox jumps
the cunning brown cat jumps
the cunning brown dog jumps
Which gives us a few tricks up our sleeves when generating test datasets, or preparing data for loading and ingestion.