我想探索一种更好的方法来应用二元函数,它通过两个参数的每个元素进行迭代 . 以下面的函数为例,让问题更简单:
func:{x+y}
a:til 10
q)a
0 1 2 3 4 5 6 7 8 9
b:a
q)b:a
q)b
0 1 2 3 4 5 6 7 8 9
我得到的是交叉 生产环境 ,使得参数的每个元素将相互交叉并应用该函数 . 我的预期结果是
0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 2 3 4 5 6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18
我目前的解决方案是首先跨越参数列表:
(func/) each (a cross b)
我想知道有更好的方法吗?简单地使用 func'[a;b]
只会得到一个不是我想要的成对结果 .
2 回答
以下应该是您正在寻找的:
同样可以应用于其他定义的函数,例如:
你不需要每个右边或左边交叉 . 因为''是一个向量函数,你可以迭代一个列表并使用其他列表作为完整向量 .