4

在 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│ │
│ └~────┘ └~────┘ └~─┘ │
└∊─────────────────────┘

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

┏→━━━━━━━━━━━━━┓
↓┏→┓  ┏→┓  ┏→┓ ┃
┃┃1┃  ┃3┃  ┃5┃ ┃
┃┗━┛  ┗━┛  ┗━┛ ┃
┃┏→┓  ┏→┓  ┏→━┓┃
┃┃6┃  ┃8┃  ┃10┃┃
┃┗━┛  ┗━┛  ┗━━┛┃
┃┏→━┓ ┏→━┓ ┏→━┓┃
┃┃11┃ ┃13┃ ┃15┃┃
┃┗━━┛ ┗━━┛ ┗━━┛┃
┃┏→━┓ ┏→━┓ ┏→━┓┃
┃┃16┃ ┃18┃ ┃20┃┃
┃┗━━┛ ┗━━┛ ┗━━┛┃
┃┏→━┓ ┏→━┓ ┏→━┓┃
┃┃21┃ ┃23┃ ┃25┃┃
┃┗━━┛ ┗━━┛ ┗━━┛┃
┗∊━━━━━━━━━━━━━┛

Dyalog APL 在⎕ML←3

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

4

1 回答 1

6

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

核心 APL 语言在 1970 年代中期开发和完善。然而,嵌套数组的出现要晚一点,也许是在 1980 年左右出现了第一个初步的偷窥实现。

当时的主要参与者是 IBM、IP Sharp Associates、STSC 和相对较新的 Dyalog。所有嵌套数组的实现在一个细节上都存在差异,可以说最大的差异是 Sharp 实现的盒装数组,它是今天在 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交换用于“first”和“mix”函数的符号定义,并提供“depth”函数的替代定义

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

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

同样,GNU APL 遵循 IBM APL2 语言兼容性。实现替代封闭行为的一种方法是编写覆盖函数来模拟其他实现的特殊性。

于 2015-01-14T11:04:00.993 回答