标签: apl

APL与A对J与K对比?

数组语言环境虽然令人着迷,却令人困惑.是否有理由选择J或K或APL或A中的一个?这些选项似乎都不是开源的 - 是否有开源版本?我很想扩大我的想法,但我仍然感到困惑.

j apl k

74
推荐指数
3
解决办法
1万
查看次数

有人会推荐学习J/K/APL吗?

几个月前我遇到了J/K/APL,同时解决了一些项目的问题,并且至少可以说是好奇.对于我制作的每一个看起来优雅的20行蟒蛇解决方案,都会有十分之一的gobsmacking 20 字符 J解决方案.我一直热衷于学习一些基本的J,并且已经做了一些尝试来学习词汇,但是发现学习曲线非常陡峭.

对于那些熟悉这些语言的人,你会建议花一些时间学习一门(我特别想到J)吗?为了满足我的好奇心而不是为了职业发展或某些这样的事情,我会这么做.

如果您愿意,可以考虑一些个人情况:

  • 我喜欢数学,每天都在我的工作中使用它(作为初创公司的数学家)但说实话我并不觉得我使用的工具(比如python + NumPy)感觉有限,所以我不能用这个借口.
  • 我并不特别渴望在金融行业工作,这似乎至少是K用户的主要呼叫港口.另外,我应该将C#作为下一种语言学习,因为它是我工作的主要语言.实际上,J几乎绝对不应该是我学习的下一种语言.
  • 我对MATLAB相当熟悉,因此使用基于数组的编程语言不会构成巨大的范式转换.

熟悉这些语言的人的任何建议都将非常感激.

programming-languages j apl k

44
推荐指数
10
解决办法
1万
查看次数

Raku 中函数对象“power”运算符的实现

在 APL 中有幂运算符?,如果将其应用于函数,则会f叠加f. 如何在 Raku 中实现该运算符?

例如,使用以下定义f

sub f(Int:D $i){ $i + 1 }
Run Code Online (Sandbox Code Playgroud)

该命令say (f ? 4)(10);应等效于say f(f(f(f(10))));.

我在下面的实现是针对一个带有一个参数的函数。

问题

  1. 如何使用适用于多个(或任何)签名的更好的实现来扩展或替换它?

  2. 如何定义该新电力运营商的“高优先级”?

  3. 有没有更好的方法来定义“身份函数”结果f ? 0

参考链接

这是 APL 的描述?“Power Operator”

?是一个“带两个点的星星”,或者更正式的“Apl 功能符号 Star Diaeresis”。)

试图

这是一个实现的尝试:

sub infix:<?>( &func, Int:D $times where $times >= 0 ) {
    if $times == 0  {
      sub func2($d) {$d}
    } else …
Run Code Online (Sandbox Code Playgroud)

infix-notation apl raku

22
推荐指数
2
解决办法
347
查看次数

是否有任何用APL编写的开源项目?

我正在努力学习APL(Kona),我正在寻找示例项目,这样我就可以了解经验丰富的APL如何组织他/她的代码.

任何开源项目都会有所帮助,但非财务或任何缺乏繁重数学的东西都会很棒.

open-source apl k

15
推荐指数
1
解决办法
1563
查看次数

是否有APL的开源实现?

我知道J&K; 但两者都不是开源的.

我也知道A +,但这似乎已经过时了.

是否有任何体面的APL开源实现?

如果是的话,在哪里?如果没有,为什么?

open-source apl

14
推荐指数
5
解决办法
3277
查看次数

我在哪里可以学习APL?

我想学习APL(更具体地说是Dyalog APL),但我似乎找不到任何好的资料来学习.

我能找到的唯一来源是Dyalog的文档下载,但除此之外,任何人都可以推荐一个好的来源吗?

apl dyalog

10
推荐指数
1
解决办法
2712
查看次数

哪个是最好的(也是免费的)APL翻译?

我需要一个APL实现来测试一些表达式,知道哪个是该语言的最佳解释器?

如果它是免费的并且它在Linux上运行会很棒.

interpreter apl

10
推荐指数
4
解决办法
8451
查看次数

如何在没有循环的情况下计算APL或J中元素的频率

假设我有两个列表,一个是文本t,一个是字符列表c.我想计算每个字符出现在文本中的次数.

使用以下APL代码可以轻松完成此操作.

+?t?.=c
Run Code Online (Sandbox Code Playgroud)

但它很慢.它取外部产品,然后对每列进行求和.

这是一个O(nm)的算法,其中n和m是大小tc.

当然我可以在APL中编写一个t逐字符读取的程序程序,并在O(n + m)中解决这个问题(假设完美哈希).

有没有办法在没有循环(或条件)的APL中更快地完成这项工作?我也接受J的解决方案.

编辑: 实际上,我这样做的地方是文本比字符列表短得多(字符是非ascii).我正在考虑文本的长度为20,字符列表的长度为数千.

如果n小于m,则有一个简单的优化.

w  ? (?t)?c
f ?  +?t?.=w
r ? (?c)?0
r[c?w] ? f
r
Run Code Online (Sandbox Code Playgroud)

w只包含t中的字符,因此表大小仅取决于t而不取决于c.该算法在O(n ^ 2 + m log m)下运行.其中m log m是进行交叉运算的时间.

但是,如果有人提供了大量的文本文件,则仍然优选使用次二次算法.

j apl

10
推荐指数
3
解决办法
1029
查看次数

Haskell的Monad vs. APL的Monad

在APL和Haskell中,monad这个词是指两个完全不同的东西,或者从两个不同的角度看同一个东西.

我对两种语言都很陌生,并试图理解更高层次的概念.

monads haskell apl

10
推荐指数
2
解决办法
438
查看次数

用C++编写K/APL样式?

我正在用C++编写代码,但我真的很喜欢K/APL的面向数组的风格.

有没有人知道一组好的运算符重载技巧/宏/ ...允许在C++中进行一些K/APL风格的编程?

谢谢!

c++ apl k

9
推荐指数
2
解决办法
1026
查看次数