J语言语言应用词类J语言共有六种词类,它们是:名词(及代名词)、动词(代动词)、副词、连词、系词和括号
这里通过上面例四说明一下J语言出现的语法现象:例中‘10 15.5 22.5 25’和‘2 0 2 1’是两组数,每个数就是一个名词;‘prices’和‘orders’是代名词,它们都以一个英文字母开头,后跟其它字母或数字
‘=.’是系词,它起赋值的作用
‘*’和‘+’是动词,动词作用于名词产生的结果仍是名词
‘/’是副词,它的作用是修饰动词,改变动词作用的方式
此例中‘+/’表示全加,即表示在数组每个元素之间插入动词‘+’
因此副词‘/’也称‘插入’副词
下面仅对动词做一些重点解释
原始动词只用一个字符或一个字符后跟一个圆点或后跟一个冒号表示的动词,称为原始动词
接受动词作用的名词,称作参变量
动词左右各带有一个参变量,称作双目动词,例如,2 % 5(动词‘%’作用于左右两参变量,表示两数相除),结果是0.4
而只带有一个右参变量的动词,称作单目动词如: % 5(动词‘%’作用于右参变量,表示求右参变量倒数),结果为0.2
通过赋值可定义新的动词(称代动词),它与定义代(名)词非常类似
例如:mod=.|6 mod y4 0 2 4 0 2 4 0 2复合动词上面讨论的原始动词可以组合成任意复杂形式的表达式
例如:-^ % 2 NB.计算顺序必须‘从右向左’,相当于 -(^(%2))-1.64872J语言的运算符(动词)没有其它编程语言那样的多种优先规则
J语言只有一条优先规则,那就是副词和连词优先于动词
不管是双目动词,还是单目动词,运算顺序都是‘从右向左’
对于初学者,开始可能不习惯,但它确实比复杂的传统的运算规则简单得多
例如:9 - 5 + 2 NB.计算按9-(5+2)23 * 4 - 26(3 * 4) - 2 NB.使用括号者优先103 + % 4 NB.单目、双目动词组合3.25数组及其运算J语言中的数据,简言之就是数组(array)数据,即使只有一个数,广义也称数组
数组呈现何种形状,用形状动词‘$’、秩(rank)等表示
对于二维以上的数组,可用双目形状动词'$'来指定其大小
如:data=. 4 -1 5 2mat=. 2 2$data NB.‘2 2’表示2行2列mat4 -15 2·数组倒置和旋转数组倒置可用单目动词‘|.’(倒置Reverse)进行,如:t=. ‘abcdefg’|.tgfedcbadata=. 4 -1 5 2|.data2 5 -1 4·矩阵转置使用单目动词‘|:’转置(Transpose)可颠倒参量轴的顺序,以达到转置的目的,如:M=. i. 3 4M0 1 2 34 5 6 78 9 10 11|:M0 4 81 5 92 6 103 7 11·内积和外积代数学中有向量之间的内积(或点积)运算,在线性代数中有矩阵与矩阵乘积运算
在代数中,向量的内积可求得如下:设有两个向量a=. 6 2 3 5 4b=. 3 7 2 6 1a和b的内积为(6x3)+(2x7)+(3x2)+(5x6)+(4x1)用J语言可用归并计算如下:+ / a * b72也可用点积连词‘.’如此定义:x +/ . * y设有两个矩阵A和BA=. 3 4 $ 1+i.121 2 3 45 6 7 89 10 11 12B=. 4 3 $ 2 + i.122 3 45 6 78 9 1011 12 13矩阵之积可用内积求得如下:A + /. * B80 90 100184 210 236288 330 372外积表示两个向量所有元素乘积的运算,其结果生成一个表或矩阵
现用插入副词‘/’定义一个双目动词‘*/’——外积
P=. 1 2 3 4 5* /~ P NB.可写成外积形式 P * / P1 2 3 4 52 4 6 8 203 6 9 12 154 8 12 16 205 10 15 20 25如果为P赋值1到9,则就是一张九九乘法表
用途学习J语言的所有原始函数句法和语义必将花费一定时间,但给您的回报是:您将能对异常错综复杂的数组和矩阵进行计算
这种计算用普通方法将是困难的或是不可能的
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。