我确信这很明显,但我对它有点不清楚。假设我想让函数执行类似f(x) = 3x+1
的操作。知道了forks的规则,我希望看到类似这样的内容:[: 1&+ 3&*
这对我来说不是 美丽,但我想更好看(1&+) @: (3&*)
带有额外的括号。相反,如果我使用13:
查询,我会得到:
13 : '1+3*y'
1 + 3 * ]
方式更美,但我不明白它是如何可能的。 ]
是身份函数,*
和+
正在做他们平常的事情,但文字是如何在这里工作的?为什么J没有尝试用参数“调用”1和3,就好像它们是函数一样?我注意到如果我用[
或]
替换任何常量,这继续做正确的事情,所以我认为它将这解释为某种类型的列车,但我不确定
答案 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