标签: perl6

如何开始使用Perl 6?

有人可以提供从Perl 6开始的材料链接吗?还有人可以指出已经用Perl 6开发的真实应用程序吗?

perl perl6 raku

14
推荐指数
3
解决办法
602
查看次数

Perl6是否支持与Perl5的__DATA__和__END__部分相同的内容?

perl6/Rakudo是否有相当于perl5 __DATA____END__部分的东西?

perl rakudo perl6 raku

14
推荐指数
2
解决办法
739
查看次数

如何在Perl 6中包含文件

我有两个Perl 6文件:

hello.p6:

sub hello
{
    say 'hello';
}
Run Code Online (Sandbox Code Playgroud)

和main.p6:

require 'hello.p6';

hello();
Run Code Online (Sandbox Code Playgroud)

但是不要工作.如何在主脚本中包含第一个文件?

perl-module perl6 raku

14
推荐指数
2
解决办法
1055
查看次数

访问Perl6中的最后一个元素

有人可以解释为什么这会访问Perl 6中的最后一个元素

@array[*-1]  
Run Code Online (Sandbox Code Playgroud)

为什么我们需要星号*

做这样的事情不是更合乎逻辑:

@array[-1] 
Run Code Online (Sandbox Code Playgroud)

perl6 raku

14
推荐指数
3
解决办法
1885
查看次数

为什么Perl 6的正确关联性不对?

Clickbaity标题,但它太多了,不能放弃.我有这个运算符,我希望是正确的关联:

sub infix:<?> ( Int:D \n, Int:D \m  --> Int:D )
    is assoc<right>
    is equiv(&infix:<**>)
    { n ** m }

put "2**2**2**2 = ",      2**2**2**2;
put "2?2?2?2 = ",         2?2?2?2;
put "2? (2? (2?2) ) = ",  2? (2? (2?2) );
Run Code Online (Sandbox Code Playgroud)

这是不正确的联想:

2**2**2**2 = 65536
2?2?2?2 = 256
2? (2? (2?2) ) = 65536
Run Code Online (Sandbox Code Playgroud)

我做得不对(咳咳)?

perl6 associativity raku

14
推荐指数
1
解决办法
289
查看次数

我定义了一个更具体的多用途后,我的Perl 6操作员去了哪里?

我正在玩这个小东西,其中一组可以通过翻转测试来充当它的补充.为了实现这一目标,我创建了会员运营商的特殊版本.

class Complement {
    has $.set;
    }

multi infix:<?> ( $a, Complement:D $c ) { $a ? $c.set   }
multi infix:<?> ( $a, Complement:D $c ) { $a ? $c.set }

my $set = (1, 2, 3).Set;
my $c = Complement.new: set => $set;

put 3 ? $set;
put 4 ? $c;
Run Code Online (Sandbox Code Playgroud)

根据我infix:<?>对另一个的定义,更普遍的似乎已经消失了.没有其他候选人:

True
Cannot resolve caller infix:<?>(Int, Set); none of these signatures match:
    ($a, Complement:D $c)
  in sub infix:<?> at /Users/brian/Desktop/complement.p6 line 11
  in block <unit> at …
Run Code Online (Sandbox Code Playgroud)

perl6 multidispatch raku

14
推荐指数
1
解决办法
242
查看次数

POD中的perl6签名

因为-->是perl6中签名中声明返回类型的首选方法,我想知道是否可以将函数签名的代码放入其中C<...>.

例如 C<foo(Int $a --> Bool)>

return escaping quoting code-documentation perl6

14
推荐指数
1
解决办法
158
查看次数

为什么+ = vs +中的性能差异?

调试一些代码最终测试了语句中的差异,例如$counter=$counter + 1;vs$counter+=1;

my $run=True;
my $counter=0;
my $sup=Supply.interval(1);
my $tap= $sup.tap({
    $run=$_ < 10;
});
{
    while $run {
        #$counter+=1;
        $counter=$counter + 1;
    }
    $tap.close;
    say "Iterations per second: {$counter/(now - ENTER now)}"; #
}
Run Code Online (Sandbox Code Playgroud)

与之$counter=$counter+1相比, 我每秒获得约20%的迭代$counter+=1;

在后台发生了什么,那是如此不同?

编辑:

有趣的是,当使用数组和超级运算符尝试此操作时,使用时性能会大大 提高+=

例如, @counter=@counter>>+<<@value; 与 10_000个元素的数组一起@counter>>+=<<@value; 使用>>+=<<,我得到的循环迭代次数约为2.8倍。

据我可以通过timecmd 得知,在任何一种情况下,并行执行最少(总用户+系统在实时的2%之内)。

关于如何/为什么这样的任何见解都是很棒的。谢谢!

perl6

14
推荐指数
1
解决办法
180
查看次数

perl6占位符变量和主题变量

Perl 6中同时存在占位符变量和主题变量。例如,以下两个语句相同

say ( $_ * 2 for 3, 9 );        # use topic variables                 
say ( { $^i * 2 } for 3, 9 );   # use placeholder variables
Run Code Online (Sandbox Code Playgroud)

在我看来,从主题变量中获得的唯一好处就是节省了一些键盘笔触。

我的问题是:是否存在用例,其中主题变量比占位符变量方便得多?

perl6 raku

14
推荐指数
2
解决办法
147
查看次数

声明并初始化范围内的类型化数组

我最近尝试my Array @a = 'a'..'z';my Array @a = @('a'..'z');

两者都会产生以下错误:

Type check failed in assignment to @a; expected Array but got Str ("a")
in block <unit> at <unknown file> line 1
Run Code Online (Sandbox Code Playgroud)

但是,在没有类型的情况下进行初始化会起作用,并且似乎最终会产生一个Array:

> my @a = 'a'..'z';
> @a.^name
Array
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

arrays typing range perl6 raku

14
推荐指数
3
解决办法
206
查看次数