Scala дает большое представление о том, как, как представляется, языковые функции реализованы как функции библиотеки.
Есть ли список типов, которые обрабатываются специально языком?
Как в спецификации, так и в качестве детали реализации?
Это будет включать, например, оптимизацию совпадений на кортежах.
Как насчет специальных соглашений, связанных с сопоставлением шаблонов, для понятий, блоков try-catch и других языковых конструкций?
Является ли String каким-то особенным для компилятора? Я вижу, что расширение String - это просто неявное преобразование в библиотеке, и что конкатенация String поддерживается Predef
, но что-то особенное с помощью языка?
Точно так же я вижу вопросы о <:<
и classOf
и asInstanceOf
, и это не ясно, что является магическим внутренним. Есть ли способ сказать разницу либо с параметром компилятора, либо с помощью байтового кода?
Я хотел бы понять, поддерживается ли функция единообразно с помощью реализаций, таких как Scala.JS и Scala -native, или если функция может фактически оказаться зависимой от реализации, в зависимости от реализации библиотеки.