Size: a a a

Язык программирования Julia / Julia programming language

2021 June 23

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
ахаха, оказывается было ранее переименование в обратную сторону https://github.com/JuliaLang/julia/pull/25654
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Оно несколько раз появлялось.

Там смысл в том, что допустим есть два пакета, A.jl и B.jl, и оба экспортируют функцию foo. При этом, эта функция определена на собственных структурах A и B, то есть название одинаковое, но функции никак не пересекаются.

Народ просил, чтобы в этом случае можно было к функции обращаться по её имени, так как никакой неоднозначности в этом случае нет.

Но нет, сказали, чтобы все шли лесом, только A.foo и B.foo.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Это неудобно, если у тебя два пакета между собой не договорились.

Например, ты делаешь какие-нибудь операции с данными, которые умеют с Table работать. И в какой-то момент ты говоришь "О, а вот для удобства я определю для моей структуры метод select."

И всё отлично работает до тех пор, пока ты не сделаешь случайно using DataFrames
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
аа, понял!
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Ну и получается тупая ситуация - либо надо следить за всеми похожими пакетами и как-то с их разработчиками договариваться, чтобы имена не пересекались или делать мета пакеты в которых общие имена перечисляются.

Или добавлять эти пакеты в качестве зависимостей, что тоже не всегда хочется (тащить DataFrames, только ради того, чтобы сделать import DataFrames: select, ну такое).
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
что-то не задумывался о таком...
но пару раз натыкался, как раз с датафреймами: в NamedTupleTools тоже есть всякие select и delete, но для таплов
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
просто посчитал "необходимым злом" такое поведение
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Да оно в принципе не очень необходимое на самом деле. Просто есть принципиальная позиция, что должно быть так.
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
тут конечно вопрос нетривиальный в плане реализации и разрешения всяких corner cases...
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Там немного мутная аргументация была (но это возможно я плохо прочитал), что-то вроде того, что если у тебя есть две функции в разных пакетах, то они разный смысл имеют и поэтому их смешивать нельзя, и надо обязательно fully qualified name указывать.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
В качестве примера приводилось, что есть trace в линейной алгебре, а есть trace в задаче обработке изображений (как в RayTracing) и поэтому, мол, надо обязательно указать из какого пакета функция пришла, чтобы пользователь не запутался.
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
интересно, выходит я реально пропустил
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Там потом один из участников этого треда сделал пакет: https://github.com/jmichel7/UsingMerge.jl
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Довольно прикольный, я им пользуюсь иногда.
Он позволяет импортировать имена и автоматически их мёрджить.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Не супер удобно, но хотя бы что-то.
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
да, в 2018 я только начал юзать джулию и не задумывался про внутренности :)
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
То есть будет что-то вроде
using DataFrames
@usingmerge NamedTupleTools: select
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
выглядит достаточно удобно :) если пакет лёгкий, то его добавить не проблема
источник

AP

Alexander Plavin in Язык программирования Julia / Julia programming language
я так до 1.6 повсюду ImportMacros.jl юзал
источник