제 언어에 대한 병렬지도 연산자를 정의하는 데 관심이 있습니다. 표현식이 주어지면 목록을 새로운 목록으로 변환합니다. 생성기와 비슷한 구문을 갖습니다. C#과 Python의 생성기와 달리, 컴파일러가 원하는 경우 (예 : 유휴 코어가 있고 목록이 실제로 크면) 병렬로 평가 될 가능성이 있습니다. 순차적으로 실행되는 foreach
과 구별하려면 witheach
이라고합니다. 예를 들어병렬지도 (생성자) 연산자
고려 :
는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