Я заинтересован в определении оператора параллельной карты для моего языка. Он преобразует список в новый список с выражением. Он будет иметь синтаксис, похожий на генератор. В отличие от генераторов в 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
Я предполагаю, что это немного утомитесь в щеку? – cdiggins