• Loren Blog

  • Menu

    归纳元操作符(reduce operator)

    归纳元操作符 [],将给定的 前缀操作符作用在 一个要归纳的 list 上, 它和 reduce 例程的运算结果一致。

    代码示例:

    say [+] 1, 2, 3; # 6
    say reduce &[+], 1, 2, 3; # 6

    在方括号和操作符之间不允许存在空白,要将函数替代操作符, 需要额外的一层括号:

    sub plus { $^a + $^b };
    say [[&plus]] 1, 2, 3; # 6

    list 参数将不会被整平(flattening),这意味着 你可以向归纳操作传递一个内嵌的 list,执行对 list 的操作:

    say [X~] (1, 2), <a b>; # 1, 2 X~ <a b>

    默认的情况下,会返回归纳操作的最终结果。 将操作符加上前缀 \,返回一个所有中间结果的 惰性(lazy)list,这叫做“三角归纳(triangular reduce)”, 如果元操作符部分已经包含 \ ,用一个 [] 引用起来(比如 [\[\x]])。

    my @n = [\~] 1 .. *;
    say @n[^5]; # (1 12 123 1234 12345)

    对结果执行多个归纳操作可以使用 reduce:

    say reduce $_, 1, 2, 3 for [&[+], &[*]]; # 6 \n 6

Posts

  • Perl6的符号表
  • Perl6调用C接口
  • 插件生命周期(QtCreator文档翻译)
  • 1的补码与2的补码
  • 归纳操作符(reduce operator)
  • emacs config
  • c++模板的技巧示例
  • 简单括号匹配
  • IA-32算术移位与逻辑移位
Loren Blog

将会写一些关于C/C++/Perl6 的小文章,记录一些知识点。


© 2017 araraloren | araraloren@github.com