kdb+

What type of composition is (count 1 2 3,)


I understand (count 1 2 3,) is a composition, because I see its type is 105.

q)type(count 5 6,)
105h

Initially I thought this is an example of implicit composition, which

Compose one or more unary values with a higher-rank value

I thought the values are

  1. unary: count
  2. unary: 1 2 3
  3. binary: , (join)

However, I don't think that's correct because , (join operator) has rank 2, but the result of the composition only has rank 1. This goes against what I read, i.e. result of composition should have the same rank as the last value.

Could someone help explain how exactly this composition works?

I suspect the "composed values" are instead

  1. unary: count
  2. unary: 1 2 3,

If this is the case, doesn't composing a series of unary values require an @ (apply at) as stated at the bottom of this page?


Solution

  • It is implicit composition but is created in a different order giving a different outcome.

    The example from the site:

    This example binds the noun to the rank2 to it's right leaving the trailing rank2 giving the rank of the whole composition as 2.

    Your example:

    This example again binds the noun to rank2 to it's right which drops it to rank 1 before composing