数组语言领域虽然很有趣,但也极其令人困惑。选择J、K、APL或A是否有原因?这些选项中似乎没有开源的版本 - 是否有开源版本?我很想拓展我的思路,但我仍然感到困惑。
更新:J 7.01已经以GPL 3的开源代码形式发布。此外还有K的变种Kona。这些增加了开源数组语言的选项。
Tobia的更新:GNU APL可以在GPL下使用。它紧密遵循最新发布的扩展APL语言的ISO标准。这是一个非常好的开源APL实现,正在积极开发和维护。还有其他有趣的实现,例如用CoffeeScript编写(可以编译为JavaScript)的ngn/APL,它具有令人惊讶的丰富功能和现代化特性。2015年,数组语言依然活跃。
Adám的更新:J的主要实现者和设计师之一Roger Hui已经加入Dyalog,并在他的指导下,Dyalog APL添加了许多J灵感的功能。这包括一种点字式函数编程风格和多个运算符和函数,其中许多已经在过程中得到改进。Dyalog APL现在可供非商业使用免费。此外,出现了几个新的APL实现;请参见aplwiki.com。2020年,数组语言依然活跃。
需要考虑的是运算符(高阶函数)的词汇。
原始APL仅具有最后和第一轴缩减(fold)(f/
,f⌿
),最后和第一轴累积缩减(f\
,f⍀
),以及内部和外部乘积(f.g
,∘.g
)。
f¨
)和轴括号规范(f[
...]
)。
J增加了大量内容(称为副词和连词),但删除了括号(轴和索引都有),each操作符(代之以更普遍的rank操作符)和最后一个轴(累积)约简。
现已停用的Sharp APL(后来是SAX)保留了传统的最后轴操作符和括号索引,同时添加了许多J的新操作符。
Dyalog APL正在逐渐接近Sharp APL的词汇表,但也并入了J专有的操作符,这些操作符从未进入过Sharp APL。
下表比较了J、Sharp APL和Dyalog APL 组合词汇表。带有淡色文本的条目需要两个符号才能生效。带有灰色背景的条目正在提出中。
要添加更多信息...
K
有一个开源版本称为Kona
,可在https://github.com/kevinlawler/kona上找到。
对于q/kdb+
,有一个试用版可用。 http://kx.com/download/
主要限制是2小时超时,32位内存,3个月的许可证期限以及许可证本身。如果您只想玩耍和学习一些东西,这些限制可能不会太麻烦。
就个人而言,我发现q
最易于使用,因为KX将单参数动词从K
翻译成英语单词,而且在http://code.kx.com上有大量文档。此外,数据库系统非常完善和灵活。
ELI是一种新开发的、免费提供的、跨平台的数组编程语言。类似于J和k,它依赖于ASCII字符集。它实现了一些在k/q/kdb+中独特的功能,比如时间数据类型和内置SQL子集。
我也感到困惑(APL总是令我困惑 - 幸运的是,距离我最后一次尝试它已经过去了20年或更长时间),但是一些搜索找到了A+,这是一个开源版本的A:
我不知道它是否能满足你(或任何人)的需求。
∇
括起来的那些)。 - Adalynn