理解 J 中具有文字值的火车
Understanding trains with literal values in J
我确定这是显而易见的,但我对此有点不清楚。假设我想让一个函数做类似 f(x) = 3x+1
的事情。知道叉子的规则,我希望看到这样的东西: [: 1&+ 3&*
这对我来说 不是 美丽,但我想 (1&+) @: (3&*)
看起来更好额外的括号。相反,如果我用 13:
查询,我会得到这个:
13 : '1+3*y'
1 + 3 * ]
更漂亮,但我不明白这怎么可能。 ]
是恒等函数,*
和 +
正在做它们通常的事情,但是文字在这里是如何工作的?为什么 J 不尝试 "call" 1 和 3 带有参数,就好像它们是函数一样?我注意到,如果我用 [
或 ]
替换任何常量,这将继续做正确的事情,所以我认为它正在将其解释为某种火车,但我不确定.
刚开始描述J的时候,forks都是动词(V V V)
,后来决定让名词在左边的tine位置,return它们的面值。所以 (N V V)
也被视为一个分支。在一些较旧的代码中,您可以看到叉子的左齿显示为 'verbified' 名词,例如 1:
或 'a'"_
充当动词 return 它们的面值给出任何参数。
(N V V)
配置在字典中描述为 "The train N g h
(a noun followed by two verbs) is equivalent to N"_ g h
." http://www.jsoftware.com/help/dictionary/dictf.htm
我确定这是显而易见的,但我对此有点不清楚。假设我想让一个函数做类似 f(x) = 3x+1
的事情。知道叉子的规则,我希望看到这样的东西: [: 1&+ 3&*
这对我来说 不是 美丽,但我想 (1&+) @: (3&*)
看起来更好额外的括号。相反,如果我用 13:
查询,我会得到这个:
13 : '1+3*y'
1 + 3 * ]
更漂亮,但我不明白这怎么可能。 ]
是恒等函数,*
和 +
正在做它们通常的事情,但是文字在这里是如何工作的?为什么 J 不尝试 "call" 1 和 3 带有参数,就好像它们是函数一样?我注意到,如果我用 [
或 ]
替换任何常量,这将继续做正确的事情,所以我认为它正在将其解释为某种火车,但我不确定.
刚开始描述J的时候,forks都是动词(V V V)
,后来决定让名词在左边的tine位置,return它们的面值。所以 (N V V)
也被视为一个分支。在一些较旧的代码中,您可以看到叉子的左齿显示为 'verbified' 名词,例如 1:
或 'a'"_
充当动词 return 它们的面值给出任何参数。
(N V V)
配置在字典中描述为 "The train N g h
(a noun followed by two verbs) is equivalent to N"_ g h
." http://www.jsoftware.com/help/dictionary/dictf.htm