小编Ant*_*nov的帖子

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
查看次数

Raku 慢速混合排序

更新

在同一台计算机上,使用 Rakudo 编译器“rakudo-moar-2021.06-01-macos-x86_64-clang.tar”,与我在原始帖子中的计算时间相比,我获得了 3-10 倍的加速。

.elems: 100000
.head(3): (id.20444 => 81.95246687507492 id.81745 => 34.859323339828464 id.79973 => 97.33816856420829)
time of .sort({-$_.value}) : 0.764283216
time of .sort(-*.value)    : 0.618963783
time of .sort.reverse      : 0.584477656
time of .values.sort       : 1.68912663
Run Code Online (Sandbox Code Playgroud)

请注意,这些时间接近 R 时间。因此,在这些类型的计算中,Raku 具有我期望的性能。


原帖

我最近观看了 Elizabeth Mattijsen 题为“Raku - Sets without Borders”的 FOSDEM 演示, 并决定Mix在我的一些计算工作流中采用 Raku对象。

我注意到对Mix对象进行排序(成对)非常慢——我会说比我预期的慢 100 到 1000 倍。请参阅下面的 Raku 代码和输出。(我还在同一台计算机上提供了相关的 R 代码和输出。)

这是预期的缓慢吗?是否有解决更快计算的方法?

(更具体地说,我对快速反向排序和快速检索 a 中的前 K 个最大元素感兴趣Mix。)

(时间是在几年前的 Mac …

sorting performance raku

16
推荐指数
2
解决办法
267
查看次数

以编程方式查找 Raku 包中的所有类、语法和角色

如何以编程方式找到 Raku 包中的所有类、语法和角色?(用字符串指定。)

我检查了类似于下面链接的讨论/帖子,但我想出的代码很难使用。(并且不做这项工作。)

动机

我想为 Raku 包自动生成 UML 类图。

请参阅 Raku 包的 PlantUML ML::StreamsBlendingRecommender

我考虑了以下步骤:

  • 使用 C++、Java、Kotlin、Raku 等语言制作的软件包中类代码的设计解析器

  • 根据解析结果生成对应的PlantUML代码

(这样的解析器可能并不难推导出。可能DrForr的工作提供了良好的开端。)

但是考虑到 Raku 的内省能力,我应该能够“仅仅”遍历包命名空间和类,而不是解析 Raku 代码。(而不是制作解析器。)

oop introspection raku

8
推荐指数
1
解决办法
128
查看次数

逗号社区发布2020.07.0 sun/javafx/PlatformUtil 问题

更新 (2020-11-03)

原帖中描述的问题已解决。我在运行 Raku 脚本时没有问题:

原帖

我在 Raku 中编程,并尝试在 Mac OS 10.15.6 上使用带有 IntelliJ IDEA 2020.2 和 2020.2.1(社区版)的Comma Community 版本 2020.07.0

当我尝试运行已配置的脚本时,出现错误“运行‘示例’时出错:com/sun/javafx/PlatformUtil”:

Commaide-error-when-script-running

我在网上进行了大量搜索以找到解决此问题的建议,但我尝试过的一切都没有奏效。所以,我恢复使用 IntelliJ IDEA 2020.1.4 。

任何建议如何让 Commaide 在 IntelliJ IDEA 2020.2.1 中工作?

javafx raku commaide macos-catalina intellij-idea-2020

4
推荐指数
1
解决办法
113
查看次数

处理音频文件的 POST 请求

使用以下命令的等效 POST 请求是什么:

对于这个curl shell命令:

curl --request POST \
  --url https://api.someservice.com/v1/ \
  --header 'Authorization: Bearer TOKEN' \
  --header 'Content-Type: multipart/form-data' \
  --form file=@/path/to/file/audio.mp3 \
  --form transformer=trans-2 \
  --form format=text
Run Code Online (Sandbox Code Playgroud)

我尝试按照“Cro::HTTP::Client”中的示例进行操作, 但没有成功......

(参见以 开头的示例my $resp = await Cro::HTTP::Client.post: 'we.love.pand.as/pandas',


更新

这是一个使用@jja 答案的工作示例,需要:

  • 拥有 OpenAI(帐户和)授权密钥

  • 从此处下载 MP3 文件之一

    • 或者使用另一个带有语音录音的 MP3 文件。
use HTTP::Tiny;


my $fileName = $*HOME ~ '/Downloads/HelloRaccoonsEN.mp3';


say .<content>.decode given HTTP::Tiny.post: 'https://api.openai.com/v1/audio/transcriptions',
        headers => { authorization => "Bearer {%*ENV<OPENAI_API_KEY>}" },
        content …
Run Code Online (Sandbox Code Playgroud)

web cro raku

4
推荐指数
2
解决办法
711
查看次数