在 k 中应用投影和单子函数

Applying of projections and monadic functions in k

如何在 k 中正确应用单子函数和投影?

KDB+ 3.6 2018.05.17 Copyright (C) 1993-2018 Kx Systems
q) \
  (5*;10*)@\:2
10 20
  ({x};{x*x})@\:2
2 4
  (#;#)@\:2
(#[2];#[2])

为什么第一个示例 2 个正常工作而最后一个不正常?我以为会是:

  (#;#)@\:2
1 1

但它给了我一个奇怪的结果。

知道了!

q)\
  (#;#)@\:2
(#[2];#[2])
  (#:;#:)@\:2
1 1

为了完整起见,这与此处记录的一元形式有关:https://code.kx.com/q/basics/exposed-infrastructure/#unary-forms

# (take) 是二元函数,不像 count 是一元函数。这就是为什么你只对它应用一个参数时得到一个投影。

q)count
#:
q)type (count)
101h
q)type (#)
102h

您可以使用 . (dot-apply) 双元函数运算符,带有两个操作数 return 不是投影的结果。

(#;#) .\: (3;til 10)
0 1 2
0 1 2