角カッコは、関数呼び出しの引数ではなく、括弧のために使用されているエラーで行います。したがって、上記のように解釈されている:
sum[(til 100) where 000011110000b]
そして、それが22に評価する理由、それはリストtil 100
の第五、第六、第七、第八値、すなわち(の和である。すなわち、あなたはおそらく、今見ることができます0 ... 99)、where
はあなたが気づいているうように関数を呼び出すとき、あなたは角括弧を省略することができ000011110000b
q)til[100] where 000011110000b
4 5 6 7
ブール・リストを使用してtil 100
にインデックス付けされているので、そうするときは、意図したとおりに解析/解釈されることを確認する必要があります。一般に、コードはの右から左にと評価されます。この場合、(til 100) where 000011110000b
が最初に評価され、その結果がsum
関数に渡されます。
についてもう一度右から左に考えると、通訳者はwhere 000011110000b
の結果を関数4590
に渡そうとしています。 4590
はkdbの名前付き関数ではありませんが、これはIPC、つまりTCPを介して他のkdbプロセスでコマンドを実行するために使用される形式です。したがって、コマンドwhere 000011110000b
を実行するために、OSファイル記述子番号4590(ほとんどの場合、有効なTCP接続に対応しない)を使用するようkdbに指示しています。詳しくは、「メッセージフォーマット」のセクションをご覧ください。 http://code.kx.com/q/tutorials/startingq/ipc/