在Raku中,如何编写Haskell的spa
函数的等价物?
在Haskell中,给定一个谓词和一个列表,可以将列表分成两部分:
例如,Haskell表达式...
span (< 10) [2, 2, 2, 5, 5, 7, 13, 9, 6, 2, 20, 4]
…计算结果为…
([2,2,2,5,5,7],[13,9,6,2,20,4])
如何编写Haskell的spa
函数的Raku等价物?
基于@chenyf的回答,我开发了以下子程序…
sub span( &predicate, @numberList )
{
my $idx = @numberList.first(&predicate):k ;
my @lst is Array[List] = @numberList[0..$idx-1], @numberList[$idx..*] ;
@lst ;
} # end sub span
sub MAIN()
{
my &myPredicate = { $_ > 10 } ;
my @myNumberList is Array[Int] = [2, 2, 2, 5, 5, 7, 13, 9, 6, 2, 20, 4] ;
my @result is Array[List] = span( &myPredicate, @myNumberList ) ;
say '@result is ...' ;
say @result ;
say '@result[0] is ...' ;
say @result[0] ;
say @result[0].WHAT ;
say '@result[1] is ...' ;
say @result[1] ;
say @result[1].WHAT ;
} # end sub MAIN
程序输出为…
@result is ...
[(2 2 2 5 5 7) (13 9 6 2 20 4)]
@result[0] is ...
(2 2 2 5 5 7)
(List)
@result[1] is ...
(13 9 6 2 20 4)
(List)
这是一种完全天真的看法:
sub split_on(@arr, &pred) {
my @arr1;
my @arr2 = @arr;
loop {
if not &pred(@arr2.first) {
last;
}
push @arr1: @arr2.shift
}
(@arr1, @arr2);
}
创建一个新的@arr1
并将数组复制到@arr2
。循环,如果数组中的第一个元素没有满足谓词,则是最后一次通过。否则,将第一个元素从@arr2
移开并将其推送到@arr1
。
测试时:
my @a = [2, 2, 2, 5, 5, 7, 13, 9, 6, 2, 20, 4];
my @b = split_on @a, -> $x { $x < 10 };
say @b;
输出为:
[[2 2 2 5 5 7] [13 9 6 2 20 4]]
这里唯一的问题是。。。如果谓词不满足怎么办?好吧,让我们检查一下列表是否为空,或者是否满足谓词来终止循环。
sub split_on(@arr, &pred) {
my @arr1;
my @arr2 = @arr;
loop {
if !@arr2 || not &pred(@arr2.first) {
last;
}
push @arr1: @arr2.shift;
}
(@arr1, @arr2);
}
我使用first
方法和: k
副词,如下所示:
my @num = [2, 2, 2, 5, 5, 7, 13, 9, 6, 2, 20, 4];
my $idx = @num.first(* > 10):k;
@num[0..$idx-1], @num[$idx..*];
我如何只使用dplyr函数(想象一下有6M行的巨大的Data.Table(BIGiris))来实现与下面的代码相同的功能呢 输出是这个。请注意,我必须重新命名列1。另外,在dplyr mutate或其他调用中,我希望以某种方式为我的新count列指定名称。 想象一下连接到这样一个表(假设iris data.frame有6M行),species更像是“species_id” 最终联接和输出(对于联接
我正在修改一个关于开发者推荐的插件(见最新帖子),该插件建议在Wordpress的中编写一些Javascript。 现在,当我这样做的时候,我的整个WordPress变成了空白。嗯,经过一点思考..."你不能在PHP中写纯Javascript"... 所以我把它们写在一个
问题内容: 什么是mySQL 中SQLServer函数SCOPE_IDENTITY()的等效项? 问题答案: 这是您要寻找的: 为了回应OP的评论,我创建了以下基准测试: 返回: 因此,它使用原始表的,而不使用触发器内部的表。 编辑: 经过所有这些时间,我意识到答案中显示的结果是错误的,尽管最后的结论是正确的。我已将结果更新为正确的值。
问题内容: 有什么办法可以使以下在Swift 3中正常工作? 该功能应该采取型的封闭,运行它传递到它,然后简单地返回。 另一个选择是为此使用运算符,例如“ ”(从Kotlin和Xtend语言中借用了这个想法)。 试图做这样的扩展: 但是它需要在闭包中显式声明参数类型: 这不方便,并且使整个想法不值得付出努力。类型已经在对象创建时指定,并且应该有可能不明确地重复它。 谢谢! 问题答案: HasApp
问题内容: 我是Firebase的新手。我正在使用admin sdk(java code)将数据存储在firebase数据库中。我已经成功完成了这一部分。现在我想在创建数据库条目和通知时写火基础云函数 由于我在Internet上搜索了更多内容,因此仅找到了node.js代码。 https://firebase.google.com/docs/functions/开始 是否可以使用admin SDK
本文向大家介绍如何在Python中编写递归函数?,包括了如何在Python中编写递归函数?的使用技巧和注意事项,需要的朋友参考一下 一个递归 函数是它的执行过程中调用自身的函数。这使函数可以重复多次,输出结果和每次迭代的结束。递归与无限有关。 下面是一个递归函数示例,用于查找整数的阶乘。 数字的阶乘 是从1到该数字的所有整数的乘积。 例如,阶乘9(表示为9!)为1 * 2 * 3 * 4 *