arrays - 如何在 Perl 6 中将未展平的数组重复传递给 reduce?

标签 arrays perl raku

我正在尝试将 xx 重复数组传递给 [X~] reduce 函数,但发现数组变平了。我搜索了在线文档和堆栈溢出,但找不到任何内容。不幸的是,我的 Perl 6 知识还很初级(尽管我对 Perl 5 非常了解)。

[X~](<1 2>, <1 2>)    # 11 12 21 22 (WHAT I WANT)
[X~](<1 2> xx 2)      # 1 2 1 2 (NOT WHAT I WANT)
[X~](<1 2> xx 2).tree # 1 2 1 2
[X~](<1 2>.tree xx 2) # 1 2 1 2

查看 .perl 转储并没有给我多少启发:
(<1 2>, <1 2>).perl    # (("1", "2"), ("1", "2"))
(<1 2> xx 2).perl      # (("1", "2"), ("1", "2")).list
(<1 2> xx 2).tree.perl # ("1", "2"; "1", "2").item

我正在使用 rakudo-star-2014.12.1-parrot.msi。

最佳答案

假设您还希望您的代码使用重复两次以上的数组,我想出的解决方法是

(<1 2> xx 2).tree.reduce({ @^a X~ @^b })

请注意,展平行为和 List/Parcel 区别 1 是已知的痛点。

改善这种情况的计划已经有一段时间了(参见 Great List Refactor ),预计会在年底 6.0 版本发布之前落地。

1 您看到的所有三个表达式都有不同的类型:
(<1 2>, <1 2>).WHAT    # (Parcel)
(<1 2> xx 2).WHAT      # (List)
(<1 2> xx 2).tree.WHAT # (LoL)

最后一个是List-of-Lists。

关于arrays - 如何在 Perl 6 中将未展平的数组重复传递给 reduce?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28719943/

相关文章:

perl - Prolog 作为 DSL 来生成 perl 代码?

perl - Bash的“DIE”信号处理程序

raku - Raku(do) 所依赖的延续的具体细节是什么?

perl - WebSocket 服务器从头开始显示操作码 -1

unit-testing - Raku 模块的覆盖测试?

raku - 在类似哈希的事物中重复且唯一

javascript - lodash/underscore.js 函数创建由 n 个 x 副本组成的数组

java - 数组消失了?

arrays - 如何合并字符串数组中有前导和尾随括号的元素?

javascript - underscore.js 如何为函数创建别名?