GNU APL和Dyalog APL中的分区行为

ale*_*ner 4 arrays split apl dyalog gnu-apl

在Dyalog APL中,有?ML哪些更改了分区的运行方式.什么时候?ML?0

(5 ? 1 0) ? 5 5 ? ?25

????????????????????????
? ??????? ??????? ???? ?
? ? 1  2? ? 3  4? ? 5? ? 
? ? 6  7? ? 8  9? ?10? ?
? ?11 12? ?13 14? ?15? ?
? ?16 17? ?18 19? ?20? ?
? ?21 22? ?23 24? ?25? ?
? ?~????? ?~????? ?~?? ?
????????????????????????
Run Code Online (Sandbox Code Playgroud)

对于(5 ? 1 0) ? 5 5 ? ?25 GNU APL中的相同语句

????????????????
????  ???  ??? ?
??1?  ?3?  ?5? ?
????  ???  ??? ?
????  ???  ?????
??6?  ?8?  ?10??
????  ???  ?????
????? ???? ?????
??11? ?13? ?15??
????? ???? ?????
????? ???? ?????
??16? ?18? ?20??
????? ???? ?????
????? ???? ?????
??21? ?23? ?25??
????? ???? ?????
????????????????
Run Code Online (Sandbox Code Playgroud)

Dyalog APL也是这样做的 ?ML?3

有没有办法改变GNU APL行为以获得相同的行为?

Lob*_*sky 6

简短的回答是否定的,因为GNU APL遵循IBM APL2语言惯例.

核心APL语言是在20世纪70年代中期开发和完善的.然而,嵌套阵列开始出现的时间稍晚,也许是从1980年左右开始出现的第一个初步偷看式实现.

当时的主要参与者是IBM,IP Sharp Associates,STSC和相对较新的Dyalog.所有嵌套的阵列实现在一个方面或另一个方面都有所不同,可以说最大的差别是夏普的盒装阵列的实现,这是今天在J中发现的盒装阵列实现的基础.

可以说,当时大型机IBM APL2可能拥有最大的市场份额.

STSC后来将其名称更改为Manugistics,实施将演变为APL2000的APL +产品套件.

STSC和Dyalog都提供了围绕各种嵌套数组亚种的一些兼容模式,STSC是EVLEVEL系统命令,进化级别,Dyalog是[] ML,迁移级别.

简而言之,Dyalog的[] ML可以设置为0,1,2或3.来自Dyalog的文档,

[]ML 0 是默认的本机Dyalog嵌套数组实现

[]ML 1 将monadic epsilon的定义更改为"enlist"函数,这是一种超级混乱

[]ML 2 交换用于"第一"和"混合"函数的符号的定义,并提供"深度"函数的替代定义

[]ML 3 提供IBM APL2兼容性.

就个人而言,我几乎完全使用[] ML 3,因为当大型机还在时,我在APL2中进行了大量编程.

同样,GNU APL遵循IBM APL2语言兼容性.实现备用封闭行为的一种方法是编写封面函数来模拟其他实现的特性.