Как новичок в Julia в этом месяце, сентябрь 2018 г., я просто привыкаю к изначально незнакомому символу «@» для макросов и «!». символ для функций с изменяемыми входами. Правильно ли я предполагаю, что это просто стилистические символы для чтения людьми, и что они на самом деле не предоставляют компилятору никакой информации?
Я поднимаю это в контексте следующего кода, который, похоже, не соответствует стилю макроса, функции или чего-либо еще в Julia, о которых я знаю. Я конкретно спрашиваю о большом «1234» ниже:
julia> big"1234" # big seems to be neither a macro or a function.
1234
julia> typeof(big"1234")
BigInt
julia> typeof(BigInt(1234))
BigInt
У меня вопрос: что большого в большом «1234»?
Изменить: я думаю, что получил свой ответ на основе комментария на https://discourse.julialang.org/t/bigfloat-promotion-rules-and-constants-in-functions/14573/4
«Обратите внимание: поскольку десятичные литералы при синтаксическом анализе преобразуются в числа с плавающей запятой, BigFloat (2.1) может не дать ожидаемого результата. Вместо этого вы можете предпочесть инициализировать константы из строк с помощью синтаксического анализа или использования большого строкового литерала.
julia> BigFloat(2.1)
2.100000000000000088817841970012523233890533447265625
julia> big"2.1"
2.099999999999999999999999999999999999999999999999999999999999999999999999999986"
Таким образом, исходя из приведенного выше комментария, big in big «1234» - это «большой строковый литерал».
Изменить 2: приведенное выше является началом ответа, но принятый ниже ответ намного более полный.