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