在 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))));.
我在下面的实现是针对一个带有一个参数的函数。
如何使用适用于多个(或任何)签名的更好的实现来扩展或替换它?
如何定义该新电力运营商的“高优先级”?
有没有更好的方法来定义“身份函数”结果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) 在同一台计算机上,使用 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 …
如何以编程方式找到 Raku 包中的所有类、语法和角色?(用字符串指定。)
我检查了类似于下面链接的讨论/帖子,但我想出的代码很难使用。(并且不做这项工作。)
元编程:什么、为什么和如何(perl6advent)
第 19 天 – 内省(perl6advent)
我想为 Raku 包自动生成 UML 类图。
请参阅 Raku 包的 PlantUML 图: ML::StreamsBlendingRecommender。
我考虑了以下步骤:
使用 C++、Java、Kotlin、Raku 等语言制作的软件包中类代码的设计解析器
根据解析结果生成对应的PlantUML代码
(这样的解析器可能并不难推导出。可能DrForr的工作提供了良好的开端。)
但是考虑到 Raku 的内省能力,我应该能够“仅仅”遍历包命名空间和类,而不是解析 Raku 代码。(而不是制作解析器。)
原帖中描述的问题已解决。我在运行 Raku 脚本时没有问题:
我在 Raku 中编程,并尝试在 Mac OS 10.15.6 上使用带有 IntelliJ IDEA 2020.2 和 2020.2.1(社区版)的Comma Community 版本 2020.07.0。
当我尝试运行已配置的脚本时,出现错误“运行‘示例’时出错:com/sun/javafx/PlatformUtil”:

我在网上进行了大量搜索以找到解决此问题的建议,但我尝试过的一切都没有奏效。所以,我恢复使用 IntelliJ IDEA 2020.1.4 。
任何建议如何让 Commaide 在 IntelliJ IDEA 2020.2.1 中工作?
使用以下命令的等效 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 文件之一
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)