gpt4 book ai didi

arrays - GNU APL 和 Dyalog APL 中的分区行为

转载 作者:行者123 更新时间:2023-12-05 00:23:41 26 4
gpt4 key购买 nike

在 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 的行为以获得相同的行为?

最佳答案

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

核心 APL 语言是在 1970 年代中期开发和完善的。然而,嵌套数组的出现稍晚一些,也许第一个初步的先睹为快的实现是在 1980 年左右开始的。

当时的主要参与者是 IBM、I. P. 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”函数,一种 super 解说
[]ML 2交换用于“第一”和“混合”功能的符号的定义,加上“深度”功能的替代定义
[]ML 3提供 IBM APL2 兼容性。

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

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

关于arrays - GNU APL 和 Dyalog APL 中的分区行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27936301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com