Piszę optymalizator dla języka podobnego do JavaScript i muszę wybrać reprezentację kodu pośredniego. Oczywistym / typowym wyborem w dzisiejszych czasach jest Static Single Assignment (SSA).
Jednak implementacja nowoczesnego kompilatora w C omawia również funkcjonalną formę pośrednią, co w zasadzie oznacza przejście na czystą funkcjonalność dla reprezentacji pośredniej (czysto pod względem tylko zmiennych lokalnych, dane sterty są nadal zmienne, a nie CPS, tylko proste let
bloki i wywołania ogona) i ma pewne zalety, ponieważ jest łatwiejszy do uzasadnienia.
Przypuszczalnie nie jest to oczywiste lub wszyscy już używaliby takiej reprezentacji, więc moje pytanie brzmi: jakie wady ma funkcjonalna forma pośrednia w porównaniu do SSA?