小编mar*_*ari的帖子

在 raku 中连接 `s///`

我发现脚本成瘾者加入 raku 的一个巨大卖点就是拥有这样的结构

my $w = "Hello world";

$w
  ~~ s/Hello/Hola/
  ~~ s/world/mundo/
  ;

say $w; # » Hola world
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法写出这样的东西。据我所知,用 的.subst方法做这件事Str太丑了,这种连锁 s///甚至tr///基本上也将成为sed用户等的入门药物。

我的问题是我是否遗漏了某些东西,如果在 raku 中以某种方式可能会出现与此类似的东西。我不是初学者,我无法弄清楚。

raku

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

在 raku 的模块中使用 Haskell 之类的 Prelude 模块

我正在编写一个包含某些部分的绘图包,并且我的运算符和数据类型分散在整个过程中。但是我不希望用户每次都添加相应的模块,因为它会非常混乱,例如我在不同的路径中有一个Point类,一个Monoid角色和一个Style

unit module Package::Data::Monoid;
# $?FILE = lib/Package/Data/Monoid.pm6

role Monoid {...}
Run Code Online (Sandbox Code Playgroud)
unit module Package::Data::Point;
# $?FILE = lib/Package/Data/Point.pm6

class Point {...}
Run Code Online (Sandbox Code Playgroud)
unit module Package::Data::Style;
# $?FILE = lib/Package/Data/Style.pm6

class Style {...}
Run Code Online (Sandbox Code Playgroud)

我想有一个haskell类似的前奏,lib/Package/Prelude.pm6 效果是我可以写出这样的脚本

use Package::Prelude;

# I can use Point right away, Style etc...
Run Code Online (Sandbox Code Playgroud)

而不是做

use Package::Data::Style;
use Package::Data::Point;
use Package::Data::Monoid;

# I can too use point right away, but for users not knowing the
# inner workings it's too overwhelming …
Run Code Online (Sandbox Code Playgroud)

haskell raku

11
推荐指数
1
解决办法
153
查看次数

在 raku 中解析参数时删除 = 的使用

您可以在 raku 中写入以下内容的事实

unit sub MAIN(Int $j = 2);

say $j
Run Code Online (Sandbox Code Playgroud)

是惊人的,而且参数解析是为你完成的这一事实是无用的。然而,我个人觉得非常不符合人体工程学,对于这样的论点,你必须写一个=来设置值,即

./script.raku -j=5
Run Code Online (Sandbox Code Playgroud)

我想知道是否有办法告诉解析器它应该允许没有选项的选项,=以便我可以编写

./script.raku -j 5
Run Code Online (Sandbox Code Playgroud)

我还没有在文档中看到这个,对于像我这样的人来说,这真的会更直观。如果目前不可能,我认为这将是一个有用的附加组件。

raku

11
推荐指数
2
解决办法
154
查看次数

raku 角色中的签名限制

也许我遗漏了一些东西,但我想知道这段代码是否应该编译有充分的理由

role L {
  method do-l (Int, Int --> Int ) { ... }
}

class A does L {
  method do-l (Int $a, Real $b --> Str) {
    .Str ~ ": Did you expect Int?" with $a + $b
  }
}

my $a = A.new;

say $a.do-l: 2, 3.323
Run Code Online (Sandbox Code Playgroud)

这将输出

5.323: Did you expect Int?
Run Code Online (Sandbox Code Playgroud)

我很好奇是否有人知道编译器至少通过角色的实现签名抛出一些警告的方法L

raku

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

标签 统计

raku ×4

haskell ×1