Size: a a a

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

2020 June 21

AI

Alexey V. Ilyin 🦔 in Язык программирования Julia / Julia programming language
Или заставить всех инициализировать структуру, в которой будет классификатор и обязательные методы к нему?
источник

AI

Alexey V. Ilyin 🦔 in Язык программирования Julia / Julia programming language
Alexey V. Ilyin 🦔
Или заставить всех инициализировать структуру, в которой будет классификатор и обязательные методы к нему?
оч громоздко получается, можно просто создать эти функции заранее, но принимающие сразу абстрактный тип и выдающие ошибку имлпементации. Но тогда все упадет при запуске, а хотелось бы написать так, чтоб это уже ловила IDE при написании
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Хороший вопрос, а как вы в Питоне проверяете, что класс какой-то реализовал такой-то метод?
источник

AI

Alexey V. Ilyin 🦔 in Язык программирования Julia / Julia programming language
ну в целом там тоже все упадет при запуске
источник

AI

Alexey V. Ilyin 🦔 in Язык программирования Julia / Julia programming language
но вот у джавы такое поймается
источник
2020 June 22

AI

Alexey V. Ilyin 🦔 in Язык программирования Julia / Julia programming language
Alexey V. Ilyin 🦔
ну в целом там тоже все упадет при запуске
но у питона это прям проблема, что у него есть много возможностей упасть в рантайме, но я не могу найти, чтоб джулия тут чекала до рантайма(
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Надо смотреть наверное книгу по паттерна проектирования в Julia, типа type traits или вроде того.
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Переслано от Anatoly Levenchuk
Вот книжка про дизайн-паттерны на Julia (зазипована с примерами кодов): https://yadi.sk/d/SuF56i2A5FaIWg
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Есть ещё всякая фигня типа methods_exist, но это тоже рантайм видимо
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
Возможно он заброшен уже, но просто сама возможность, что это не невозможно -- написать type class и instance
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
То есть "без таких-то методов не создать"
источник

AI

Alexey V. Ilyin 🦔 in Язык программирования Julia / Julia programming language
спасибо, посмотрю)
источник

A

Arthur in Язык программирования Julia / Julia programming language
Посмотрите BinaryTraits.jl
источник

A

Arthur in Язык программирования Julia / Julia programming language
Там есть проверка интерфейса, но так как язык динамический, все равно это надо пихать в тесты пакета. На этапе компиляции это сейчас не проверяется, возможно и не будет
источник

A

Arthur in Язык программирования Julia / Julia programming language
Да и из-за динамической природы языка ошибки компиляции не всегда однозначно отличаются от ошибок рантайма на практике
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Так как Julia это duck typing, то пытаться её обмануть и сделать язык со статической типизацией не получится.
источник

A

Arthur in Язык программирования Julia / Julia programming language
Можете ещё посмотреть issue про то, чтобы сделать has_method static проверяемым
источник

АО

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

A

Arthur in Язык программирования Julia / Julia programming language
Андрей Оськин
Так как Julia это duck typing, то пытаться её обмануть и сделать язык со статической типизацией не получится.
Duck typing, кмк, ортогональная фича с динамической типизацией, т.е. язык может быть вполне себе статическим, но duck typing, в Go интерфейсы вполне себе по схожему принципу работают
источник