标签: perl6

为什么整数除法在许多脚本语言中向下舍入?

在我测试的语言中,- (x div y )不等于-x div y; 我已经//在Python中,/在Ruby中,div在Perl 6中进行了测试; C有类似的行为.

这种行为通常是根据规范,因为div通常被定义为舍入向下分工的结果,但它不从的观点算术点做出很大的意义,因为它使div行为以不同的方式取决于标志,它引起混乱,如这篇文章如何在Python中完成.

这个设计决策背后是否有一些特定的理由,或者只是div从头开始定义?显然Guido van Rossum在博客文章中使用了一致性论证,解释了它是如何在Python中完成的,但如果你选择整理,你也可以有一致性.

(受到PMurias在#perl6 IRC频道中的这个问题的启发)

ruby python integer-division perl6 raku

43
推荐指数
5
解决办法
4663
查看次数

与所有不同的Perl 6相等运算符有什么关系?(==,===,eq,eqv,~~,=:=,...)

Perl 6似乎爆发了相等的运算符.什么是=:=leg和之间有什么区别cmp?还是eqv===

有没有人有一个很好的总结?

operators perl6 raku

38
推荐指数
3
解决办法
2425
查看次数

只能'perl6'解析Perl 6吗?

有(相对)众所周知的Perl公理,"只有perl可以解析Perl." 我想知道,Perl 6会保持这种情况吗?

扩展讨论......考虑到PyPy最近的更新,我想到了这个问题.Perl的独特解析能否阻止它进行类似的工作?在Perl代码(PPI?)的受限制的静态视图中有多大价值?Perl 6可以有一个JIT编译器吗?*

*我不确定这些概念是否相关.是吗?

perl parsing jit perl6 raku

37
推荐指数
4
解决办法
1548
查看次数

Parrot与其他虚拟机相比如何?

Parrot是最初为Perl 6设计的虚拟机.

Parrot VM提供哪些技术功能,如Java虚拟机(JVM)/热点VM公共语言运行时(CLR)等竞争虚拟机缺乏?

clr jvm parrot perl6 raku

28
推荐指数
5
解决办法
4757
查看次数

Perl 6的当前状态是什么?

Perl 6目前的状态是什么,它是否已投入生产?我们现在站在哪里?有许多程序员对Perl 6的当前进展感到好奇.

关于reddit还有另外两个主题,http://perlmonks.org/?node_id = 835419.

perl perl6 raku

28
推荐指数
3
解决办法
4149
查看次数

随着Perl 6实现的成熟,我们可以期待什么性能提升?

每次我下载Rakudo Perl 6的新副本时,我都运行以下表达式,只是为了了解它当前的性能:

say [+] 1 .. 100000;
Run Code Online (Sandbox Code Playgroud)

并且速度一直在增加,但每次计算都有明显的延迟(几秒).作为比较,Perl 5(或其他解释语言)中的类似内容几乎立即返回:

use List::Util 'sum';

print sum(1 .. 100000), "\n";
Run Code Online (Sandbox Code Playgroud)

或者在Ruby中(也几乎是即时的):

(1 .. 100000).inject(0) {|sum,x| sum+x}
Run Code Online (Sandbox Code Playgroud)

将表达式重写为Perl6的loop速度大约是缩小范围的两倍,但对于简单的计算,它仍然是一个非常明显的延迟(超过一秒):

my $sum;
loop (my $x = 1; $x <= 100000; $x++) {$sum += $x}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,Perl6实现的哪些方面导致了这些性能问题?并且这应该随着时间的推移而改善,还是这个开销是Perl6使用的"一切都是对象"模型的不幸副作用?

最后,loop构造比[+]减速算子更快吗?我认为循环将导致更多的总操作而不是减少.

编辑:

我会接受这两个mortiz年代和hobbs'如果我能的回答.一切都是作为一个方法调用处理更直接地回答为什么[+]慢,所以一个人得到它.

perl performance rakudo perl6 raku

27
推荐指数
4
解决办法
2971
查看次数

Perl 6如何评估真实性?

在阅读有关Perl 6的内容时,我看到一个被大肆宣扬的功能,您不再需要这样做:

return "0 but true";
Run Code Online (Sandbox Code Playgroud)

...但可以改为:

return 0 but True;
Run Code Online (Sandbox Code Playgroud)

如果是这样的话,Perl 6中的真相如何运作?在Perl 5中,它很简单:0,""和undef都是假的,其他一切都是真的.

在布尔上下文中,Perl 6中有哪些规则?

perl6 truthiness raku

26
推荐指数
5
解决办法
1049
查看次数

我知道Perl 5.学习Perl 6有什么好处,而不是转向Python?

来自Perl 5背景,迁移到Perl 6或Python有什么好处?

编辑:如果你认为这只是因为你认为它只是火焰棒,请阅读下面的答案.他们不是在争论; 他们写得很好,讨论了每种语言的优缺点.为Stack Overflow社区提供一些功劳.

python perl comparison perl6 raku

23
推荐指数
7
解决办法
2904
查看次数

如何检查文件是否为文本文件?

Perl6是否具有类似于Perl5 -T文件测试的功能来判断文件是否为文本文件?

file-type perl6 raku

22
推荐指数
3
解决办法
1742
查看次数

有多少种方法可以描述Perl 6中的Fibonacci序列?

我一直在研究在Perl 6中构造惰性列表的各种方法,我想收集描述Fibonacci序列的所有简洁方法.

我将从马萨克的期刊中的三个开始:

my @fibs := (0, 1, -> $a, $b { $a + $b } ... *);

my @fibs := (0, 1, { $^a + $^b } ... *);  

my @fibs := (0, 1, *+* ... *);
Run Code Online (Sandbox Code Playgroud)

我认为这样的东西也会起作用,但我认为我的语法有误:

my @fibs := (0, 1, (@fibs Z+ @fibs[1..*]));
Run Code Online (Sandbox Code Playgroud)

有什么东西急切(切片?)并导致Rakudo进入无限循环.它是Haskell定义的翻译:

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)
Run Code Online (Sandbox Code Playgroud)

更新:

看起来像zipWith示例的问题是@fibs[1..*]切片.if tail定义为sub tail (@x) {my $i = 1; {@x[$i++]}...*}然后它正常工作.我很想知道为什么切片对任何熟悉Rakudo内部的人来说都不是懒惰的.

另一个不错的是:

my …
Run Code Online (Sandbox Code Playgroud)

perl fibonacci lazy-evaluation perl6 raku

21
推荐指数
1
解决办法
1259
查看次数