我正在看着愚蠢/可爱/辉煌的
“sleep sort” that seems to have originated over at 4chan.为了对一系列的整数进行排序,这个想法是粗略的
foreach elt in @array spawn thread(elt) @H_502_3@thread(n)的作用
sleep n print n @H_502_3@所以较小的值会更早地打印出来.
有一个Perl6实现
@foo = @foo>>.&sleep; @H_502_3@我得到了>> ‘超级’运算符,并且这假定超级自动并行化.但是.&困惑我.
有谁能解释一下?
谢谢
解决方法
如果你有一个函数yourfunc,那么你可以用&符号& yourfunc获取它的引用.语法$obj.$function只用一个参数$obj调用$function.所以人们也可以编写$function($obj) – 除了这个语法不允许使用超级.
但是,无论谁想出这个“实施”,三个账户都是错误的:
> hyper运算符允许编译器生成许多线程来执行每个方法,它不必一次为所有这些线程生成一个线程 – 所以“随机排序”不能工作>超级运算符可以随机化方法的执行顺序,但它必须保留顺序或返回的项目 – 所以@foo根本不会被排序,即使第一个点不适用.> sleep()应该返回睡眠的秒数,而不是参数.如果有人在计算过程中将计算机设置为睡眠状态,则结果可能会高得多.