如果我的变量存储从文件读取的数据,为什么它不受某些内置函数的影响?

Why is my variable unaffected by certain built-in functions if it stores data read from a file?

我有一个名为 01.in 的文件,在我 运行 的同一个文件夹中。它包含一行,其中有一串数字。例如,假设它包含以下字符串:1122.

我从该文件中读取数据,将其转换为整数列表,并使用以下行将其存储在变量 a 中:

a:("i"$read0 `:01.in)-"i"$"0"

现在,如果我尝试使用某些二元内置函数,例如 xprevrotate,q 解释器要么不输出任何内容,要么输出原始列表。例如:

q)a
1 1 2 2
q)-1 xprev a

q)0 xprev a
1 1 2 2
q)1 xprev a

q)-1 rotate a
1 1 2 2
q)0 rotate a
1 1 2 2
q)1 rotate a
1 1 2 2

如果我直接在列表 1 1 2 2 中使用这些相同的功能,它们也可以工作。我试图理解为什么我正在做的事情没有像我预期的那样工作。请注意:我是 q 的新手,所以如果这是我遗漏的明显内容,我深表歉意。

通过您读取文件的方式,您正在创建一个嵌套列表:

q)type a
0h
q)0N!a;
,1 1 2 2i

这里我用0N!表示原始结构,,表示这是一个嵌套列表。相反,尝试像这样阅读它:

q)a:"I"$'first read0`:01.in
q)a
1 1 2 2i
q)-1 xprev a
1 2 2 0Ni