我有興趣爲我的語言定義一個並行映射運算符。它將一個列表轉換成一個給定表達式的新列表。它會有一個類似於生成器的語法。與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