在J中理解具有字面值的列车

时间:2017-11-01 19:57:40

标签: j

我确信这很明显,但我对它有点不清楚。假设我想让函数执行类似f(x) = 3x+1的操作。知道了forks的规则,我希望看到类似这样的内容:[: 1&+ 3&*这对我来说不是 美丽,但我想更好看(1&+) @: (3&*)带有额外的括号。相反,如果我使用13:查询,我会得到:

   13 : '1+3*y'
1 + 3 * ]

方式更美,但我不明白它是如何可能的。 ]是身份函数,*+正在做他们平常的事情,但文字是如何在这里工作的?为什么J没有尝试用参数“调用”1和3,就好像它们是函数一样?我注意到如果我用[]替换任何常量,这继续做正确的事情,所以我认为它将这解释为某种类型的列车,但我不确定

1 个答案:

答案 0 :(得分:2)

当J首次被描述时,forks都是动词(V V V),但是后来决定让名词在左边的位置并返回它们的面值。所以(N V V)也被视为一个分叉。在一些较旧的代码中,您可以看到fork的左叉显示为“verbified”名词,例如1:'a'"_,它们作为动词在给出任何参数时返回其面值。

(N V V)配置在字典中描述为“火车N g h(名词后跟两个动词)相当于N"_ g h。” http://www.jsoftware.com/help/dictionary/dictf.htm