Não entendo o que where faz quando aplicado a uma lista de inteiros (ou um dicionário com valores int):
where til 4
/ 1 2 2 3 3 3
where `a`b`c`d!til 4
/ `b `c `c `d `d `d
O padrão do valor retornado é o mesmo, mas não tenho certeza de qual é a operação que está sendo aplicada. Finalmente entendi tudo sobre 42 no Guia do Mochileiro das Galáxias... Que pergunta "onde" responde neste caso de uso?
Para cada item da sua lista x, onde recebe n cópias do índice i, onde n é um inteiro positivo. então, no seu exemplo
ele pega 0 vezes o índice 0, (portanto não mostrado), 1 vezes o índice 1, 2 vezes o índice 2 e finalmente 3 vezes o índice 3.
Isso funciona com qualquer sequência
É por isso que
where
funciona perfeitamente com máscaras booleanas e retorna o índice de todos os índices verdadeiros0 vezes índice 0, 1 vez índice 1, 0 vezes índice 2 e assim por diante. Agora, dicionários, em dicionários KDB/Q, bem como tabelas (uma tabela é simplesmente um dicionário de coluna invertida) são cidadãos de primeira classe, o que significa que todos os operadores trabalharão em sua parte de valor (um dicionário é um mapeamento de chave(índice)-valor)
onde agora leva 0 vezes o índice ou chave a, 1 vez o índice ou chave b, 2 vezes o índice c e 3 vezes o índice d.
Espero que isso ajude. Avise-me se ainda não estiver claro.