Díky za článek.
<q>... skok lze totiž provést pouze v rámci těla jedné metody, není tedy možné skočit na libovolné místo v bajtkódu, což ostatně platí i pro všechny další VM.</q>
Takže všechny tyhle VM dobrovolně rezignují na optimalizaci tail callů jinam, nebo mi něco uniká? Nebo to optimalizuje až JIT podle známě sekvence?
Co mně dál zaujalo je že z bajtkódu clispu si vybavuju instrukci pro table-driven skok podle hodnoty; to (nebo něco podobného) tu není, nebo to jen není zmíněno?
Nejenom na optimalizaci tail callů mimo vlastní funkci/metodu, ale třeba JVM nedokáže optimalizovat ani na tail call v rámci jedné metody, tj. překlad do normální smyčky bez použití zásobníku. Pro samotnou Javu to až takový problém není, ta je FP na hony vzdálena :-) ale pro jazyky postavené nad JVM se už vymýšlí různé vychytávky, jak to obejít (přes GOTO).