После того, как я много прочитал в invokeDynamic, я все еще немного сбит с толку. Кажется, одна повторяющаяся тема заключается в том, что Clojure на самом деле не нуждается в этом или, по крайней мере, нуждается в нем меньше, чем в других реализациях динамического языка на JVM (Jruby, JPython, Groovy и т. д. .). Я не понял всех деталей, но кажется, что наличие аннотаций типов является основной причиной, которая просто устраняет проблему динамической отправки.
1. Безопасно ли описывать Invoke-Dynamic как способ эффективной реализации сложных сценариев диспетчеризации методов? (Есть ли еще что-нибудь?)
2- Разве наличие jit не должно устранять необходимость в invoke-dynamic ? Проблема, по-видимому, возникает из-за отсутствия информации о типах среды выполнения, и jit должен иметь эту информацию.
3-JRuby, кажется, имеет jit и использует invokdynamic, почему?