小编p6s*_*eve的帖子

JavaScript 箭头函数的 raku 等价物是什么?

在 JavaScript 中,我可以去

const materials = [
  'Hydrogen',
  'Helium',
  'Lithium',
  'Beryllium'
];

console.log(materials.map(material => material.length));
// expected output: Array [8, 6, 7, 9]
Run Code Online (Sandbox Code Playgroud)

我猜 raku 在功能上有一些印记 - 我想知道是否有人可以澄清等效代码(请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions

javascript functional-programming raku

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

Baggy添加(+)是否适用于MixHash权重?

我正在使用MixHash将两个Hashes与Bag add(+)运算符组合在一起.这似乎有效 - 但是...我有点惊讶的是,工会的结果需要重新强制回到MixHash.

我的猜测是Bag add(+)infix操作符首先将所有内容强制转换为Bag并将结果作为Bag返回.这对我来说可能有风险,因为我的一些重量是负的(因此首先是混合).这会正确地增加负重吗?

或者,是否有Mix add(+)运算符?

my MixHash $dim-mix;
for ... {
    my $add-mix = $!dims.MixHash;
    $dim-mix = $dim-mix ?? ( $dim-mix (+) $add-mix ).MixHash !! $add-mix;
}
dd $dim-mix;
Run Code Online (Sandbox Code Playgroud)

现在我看一下这个释义代码,或许有一些三元的表述?!既然已经在左边了,可以避免在测试中拼出$ dim-mix?

非常感谢任何建议!

perl6

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

请问@INC的perl6等价物是多少?

我去

export PERL6LIB="/GitHub/perl6-Units/lib"
Run Code Online (Sandbox Code Playgroud)

然后

echo $PERL6LIB
/GitHub/perl6-Units/lib
Run Code Online (Sandbox Code Playgroud)

但是当我跑步的时候 perl6 t/01-basic.t

use v6;

use Test;

plan 3;

lives-ok {
    use Units <m>;
    ok @Units::UNITS.elems > 0;
    ok (0m).defined;
} 

done-testing;
Run Code Online (Sandbox Code Playgroud)

我仍然得到一个错误

===SORRY!===
Could not find Units at line 8 in:
    /Users/--me--/.perl6
    /usr/local/Cellar/rakudo-star/2018.01/share/perl6/site
    /usr/local/Cellar/rakudo-star/2018.01/share/perl6/vendor
    /usr/local/Cellar/rakudo-star/2018.01/share/perl6
    CompUnit::Repository::AbsolutePath<140707489084448>
    CompUnit::Repository::NQP<140707463117264>
    CompUnit::Repository::Perl5<140707463117304>
Run Code Online (Sandbox Code Playgroud)

在Perl 5中,我会习惯于print "@INC";在抛出错误之前查看为lib搜索的路径.使用say flat $*REPO.repo-chain.map(*.loaded);它们在加载之前或之后抛出异常.

任何帮助将非常感激 - 或者可能暗示放入什么,~/.perl6因为我无法使符号链接工作.

perl6 raku

9
推荐指数
1
解决办法
278
查看次数

“序列”是做什么的?

从说的文档中,

Returns the self-reference to the instance itself:
    my $b; # defaults to Any 
    say $b.serial.^name;   # OUTPUT: «Any?» 
    my $breakfast = 'food';
    $breakfast.serial.say; # OUTPUT: «food?» 
Run Code Online (Sandbox Code Playgroud)

我没有最雾的例程,请问有人可以解释吗?

perl6

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

为什么 Duration.new 可以处理 Int 而不能处理 Rat?

对于 Duration,为什么我需要手动将 Rat 强制为 Real 而不是 Int?

这是基于实施 Perl 6.d 的 MoarVM 2020.01.1 版构建的 Rakudo 2020.01 版。在 OSX 上。

say $v.WHAT; #(Int)
$v = Duration.new( $v );
say $v;     #20 

my $w = 20.0;
say $w.WHAT; #(Rat)
$w = Duration.new( $w.Real );
say $w;     #20 

my $x = 20.0;
say $x.WHAT; #(Rat)
$x = Duration.new( $x );
say $x;     #hangs
Run Code Online (Sandbox Code Playgroud)

raku

9
推荐指数
1
解决办法
182
查看次数

我应该根据使用语句的顺序获得 raku Segfault 吗?

我正在寻求帮助以防止我扯掉头发。我有几个相互依赖的模块:

  • 物理::单位
  • Physics::Measure(使用 Physics::Unit)

现在我创建了一个新模块 Physics::UnitAffix,其工作是将 SI 前缀和 SI 单位的组合作为 raku 后缀运算符(cm、mm、nm 等)导出到脚本命名空间中。

这是新模块的高尔夫版本:

unit module Physics::UnitAffixQ:ver<0.0.4>:auth<Steve Roe (p6steve@furnival.net)>;

{
use Physics::Unit;

Unit.new( factor => 0.000000001, offset => 0, defn => 'nanometre', type => '', 
      dims => [1,0,0,0,0,0,0,0], dmix => ("metre"=>1).MixHash, 
      names => ['nm'], stock => True );

}

sub do-postfix( Real $v, Str $n, Str $t ) { 
    my $pmt = "Physics::Measure::$t";
    return ::($pmt).new(value => $v, units => $n);
} 

sub postfix:<nm> (Real:D $x) is export(:DEFAULT) { do-postfix($x,'nm','Length') } …
Run Code Online (Sandbox Code Playgroud)

raku

9
推荐指数
0
解决办法
118
查看次数

为什么空的乐形阵列是真实的?

看到这里,我有点惊讶:

> say my @i.so
False
> say my @i[3].so
True
Run Code Online (Sandbox Code Playgroud)

谁能解释一下,为什么在乐曲中,空数组是假的,而空数组是真?

raku

9
推荐指数
1
解决办法
144
查看次数

Perl6 - 在一些子例程签名中的$:for

我在另一个问题中遇到了这个错误信息,我想知道$:部分签名的含义是什么?

Cannot resolve caller index(Str: Str, Any); none of these signatures match:
      (Str:D $: Cool:D $needle, *%_)
      (Str:D $: Str:D $needle, *%_)
      (Str:D $: Cool:D $needle, Cool:D $pos, *%_)
      (Str:D $: Str:D $needle, Int:D $pos, *%_)
Run Code Online (Sandbox Code Playgroud)

signature perl6

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

为什么perl6 multi默认为sub?

在参考这个问题/答案时,perl6 multi默认为sub.

对于<class>类型的调用者,没有这样的方法<name>

我原以为它默认为方法.有人可以解释一下这个理由吗?

perl6 dispatch

8
推荐指数
2
解决办法
133
查看次数

raku 可以避免这种格式错误的 UTF-8 错误吗?

当我运行这个 raku 脚本时...

my $proc = run( 'tree', '--du', :out);
$proc.out.slurp(:close).say;
Run Code Online (Sandbox Code Playgroud)

我在 MacOS 上收到此错误...

Malformed UTF-8 near bytes ef b9 5c
Run Code Online (Sandbox Code Playgroud)

......而不是像zsh这样的输出,这是我想要的......

.
??? 00158825_20210222_0844.csv
??? 1970-Article\ Text-1971-1-2-20210118.docx
??? 1976-Article\ Text-1985-1-2-20210127.docx
??? 2042-Article\ Text-2074-1-10-20210208.pdf
??? 2045-Article\ Text-2076-1-10-20210208.pdf
??? 6.\ Guarantor\ Form\ (A).pdf
Run Code Online (Sandbox Code Playgroud)

我试过slurp(:close, enc=>'utf8-c8')了,错误是一样的。

我也试过...

 shell( "tree --du >> .temp.txt" );
 my @lines = open(".temp.txt").lines;
 dd @lines;
Run Code Online (Sandbox Code Playgroud)

......错误是一样的。

打开 .temp.txt 揭示了这一点......

.
â<94><9c>â<94><80>â<94><80> [    1016739]  True  
â<94><9c>â<94><80>â<94><80> [ 9459042241]  dir-name
â<94><82>   â<94><9c>â<94><80>â<94><80> [     188142]  Business …
Run Code Online (Sandbox Code Playgroud)

unicode raku

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