我有兴趣为我的语言定义一个并行映射运算符。它将一个列表转换成一个给定表达式的新列表。它会有一个类似于生成器的语法。与C#和Python中的生成器不同,如果编译器需要(例如,有一个空闲内核,并且列表非常大),它可能会被并行评估。它将被称为witheach
,以便将它与顺序执行的foreach
区分开来。并行映射(发生器)运算符
例如考虑:
var f = function(int x) : int { return x * 2; }
var my_list = 0..1000000;
var my_mapped_list = witheach (i in mylist) yield f(i);
我的问题是,这是怎么回事成为谁可放入f
副作用程序员太不直观?当然,我会说不要在文档中这样做,但大多数程序员不会阅读语言文档。 :-)
我猜更大的问题是,现代程序员可以适应他们的语言中的隐式并行列表处理语义,还是需要更明确的东西?
“他们需要更明确的东西” - 是的,不要称之为“witheach”,而是“WARNING_DO_NOT_SIDE_EFFECT_HERE_PARALLEL_MAP”。 – Svante 2009-10-26 13:35:56
我猜这在脸颊上有点令人讨厌? – cdiggins 2009-10-26 16:10:51