Здравствуйте, dsorokin, Вы писали:
D>>>Иногда yieldcomp — очень полезная штука. Как и returncomp (aka return! в F#). С точки зрения монады yieldcomp и returncomp очень близки. WH>>А вот тут ИМХО можно смотреть на типы.
Немного гоню. Для list и array comprehension тоже проверяется тип по аккумулятору. Он должен быть единым. А вот билдер, генерирующий сам код, может делать, что угодно с yieldcomp и returncomp, также как и с yield и return. Просто эти конструкции фиксирует сам факт наличия монады для всех зависимых выражений, что может влиять на генерацию. Но в ядре макроса comp сами типы не проверяется, кроме, может быть, самой последней стадии — оборачивания значения в конечный результат. Но там особая история.