Я новичок в Julia, и я пытаюсь понять, на уровне языка, что ccall
. На уровне синтаксиса он выглядит как нормальная функция, но он явно не ведет себя так же, как он принимает свои аргументы:
Обратите внимание, что кортеж типа аргумента должен быть буквальным кортежем, а не переменная или выражение, привязанное к кортежу.
Кроме того, если я оцениваю переменную, связанную с функцией в Julia REPL, я получаю что-то вроде
julia> max
max (generic function with 15 methods)
Но если я попытаюсь сделать то же самое с ccall
:
julia> ccall
ERROR: syntax: invalid "ccall" syntax
Ясно, что ccall
является специальным синтаксисом, но он также не является макросом (префикс @
и недопустимое использование макросов дает более конкретную ошибку). Итак, что это? Это что-то запеченное в языке, или что-то, что я мог бы определить с помощью какой-либо языковой конструкции, с которой я не знаком?
И если это какой-то запеченный кусок синтаксиса, почему было решено использовать нотацию функций, вместо того, чтобы реализовать его как макрос или создать более читаемый и отличный синтаксис?