Если у меня есть значение a: Free[Op, A]
, возможно ли «сгладить» структуру a
так, чтобы два Op
, связанных вместе свободной монадой, могли быть объединены в один?
Контекст: я хотел бы выполнить это как шаг оптимизации перед интерпретацией, потому что семантика Op
заключается в том, что его операции идемпотентны. Таким образом, если два появляются «подряд», второй может быть устранен без ущерба для семантики программы.
Free
'омflatMap
для предотвращения переполнения стека: он делает дальнейший процесс самоанализа невозможным, заключая вычисления в функцию батута. - person P. Frolov   schedule 21.09.2017