Size: a a a

2021 February 01

DS

Doge Shibu in rust_offtopic
Которую можно взять с нулевым включением мозга и она будет просто работать
источник

s

suhr in rust_offtopic
Emmanuel Goldstein
А, об этом я тоже думал
Для проверки функции мы можем породить фейковый «тип», для которого заданные функции возвращают заданные значения.
И это ломает многие конструкции вроде ифа как специализации.
источник

OA

Oleg Andreev in rust_offtopic
Agrailag
Для этого придумали долговые расписки
ну конечно, и посмотри на волшебный результат
источник

DS

Doge Shibu in rust_offtopic
Emmanuel Goldstein
Угу, только завтипы — это много головоломной теории, и потом часы обсуждений в чатиках «как доказать поворот матрицы». Я тупой. Я не хочу ничего доказывать.
Доказывают в чатиках лишь по той причине, что там хотят в типах энкодить утверждения о коде и их прувать.

Если это не нужно, то особых проблем с зав типами нет
источник

DS

Doge Shibu in rust_offtopic
Это будет просто дико выразительная система типов и всё
источник

EG

Emmanuel Goldstein in rust_offtopic
Doge Shibu
Доказывают в чатиках лишь по той причине, что там хотят в типах энкодить утверждения о коде и их прувать.

Если это не нужно, то особых проблем с зав типами нет
s/особых проблем с завтипами нет/завтипы не нужны/
источник

S

SedSub in rust_offtopic
Doge Shibu
Доказывают в чатиках лишь по той причине, что там хотят в типах энкодить утверждения о коде и их прувать.

Если это не нужно, то особых проблем с зав типами нет
Доказывают в чатиках лишь по той причине, что там хотят в типах энкодить утверждения о коде и их прувать.

Если это не нужно, то особых проблем с зав типами нет
источник

OA

Oleg Andreev in rust_offtopic
если б золото летало как биткоин, то в 1913 году никакой бы федрезерв был не нужен, а вместе с ним и конфискация 1933го
источник

EG

Emmanuel Goldstein in rust_offtopic
suhr
И это ломает многие конструкции вроде ифа как специализации.
Если ты не разу не используешь дженерик и не указал для него конкретного типа, то да, специализация будет работать, как если это «некий неизвестный тип»
источник

DS

Doge Shibu in rust_offtopic
Emmanuel Goldstein
s/особых проблем с завтипами нет/завтипы не нужны/
Нужны - как одна из мощнейщих систем типов, где все указанные вещи напрямую выражаются в них.

При этом опять-таки с доказанной корректностью самой системы типов, кучей ресерча по теме и готовыми реализациями в которые можно подсмотртеть.
источник

DS

Doge Shibu in rust_offtopic
И при этом которая хоть кому-то уже знакома.
источник

DS

Doge Shibu in rust_offtopic
Академия не просто так это изучает и она не просто так есть. Игнорировать её наработки - это дико тупо.
источник

EG

Emmanuel Goldstein in rust_offtopic
Doge Shibu
Академия не просто так это изучает и она не просто так есть. Игнорировать её наработки - это дико тупо.
Ну, да, можно построить красивую систему типов на основе красивой математики. А можно использовать кривой, не идеальный костыль, который можно будет понять без красивой математики.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Emmanuel Goldstein
Я продолжаю размышлять над своей идеей про систему типов, которая на самом деле просто пачка const fn
Кажется, это позволяет реализовывать достаточно сложные фичи почти бесплатно
Она не даёт бесплатно зависимые типы и линейные/афинные/релевантные типы, но HKT, GAT, специализация идут бесплатно
Трейт — это просто функция
my_trait :: (Type, ...) -> Maybe (Type, ...)

(где (Type, ...) это «tuple из некоего количества элементов типа Type»)
Если трейт возвращает Just ..., то он реализован и внутренности Just — ассоциированные типы
Если Nothing, то трейт не реализован
При компиляции вместо сложной магии настоящих тайпчекеров, мы просто вызываем функцию и смотрим, что она вернёт
Специализация — это просто if внутри функции
Дженерик-типы — это функция, которая принимает тип и возвращает тип
HKT — это просто частично применённый дженерик-тип (и мы даже можем делать разные лейауты для разных аргументов дженерика, простым ифом)

У меня, правда, ощущение, что вывод типов это ломает напрочь, кроме самых тривиальных случаев. Фиг бы с тем, что тут очевидно получается Тьюринг-полный тайпчекинг, но для рабочего вывода типов тут потребуется реверсивно исполнять Тьюринг-полную программу что эээ немного невозможно. Вывод возвращаемого типа функции будет работать нормально, но вывод типов аргументов будет сломан на уровне «проще вообще его не делать». Возможно, конечно, эту боль можно как-то уменьшить с помощью простого синтаксиса для type ascription, но всё равно неприятно.
Почитай теорию
источник

EG

Emmanuel Goldstein in rust_offtopic
Я — тупой и не умею в математику.
источник

ΑZ

Αλεχ Zhukovsky in rust_offtopic
Ты делаешь простые вещи сложными)
источник

DS

Doge Shibu in rust_offtopic
Emmanuel Goldstein
Ну, да, можно построить красивую систему типов на основе красивой математики. А можно использовать кривой, не идеальный костыль, который можно будет понять без красивой математики.
Было бы что особо понимать в зав типах. Там нет прям какой-то дикого мозголобия или особой математики
источник

DS

Doge Shibu in rust_offtopic
Если ты можешь в простейщую логику, то ты можешь и в зав типы.
источник

DS

Doge Shibu in rust_offtopic
Это тупо ещё одна логическая система.
источник

EG

Emmanuel Goldstein in rust_offtopic
Doge Shibu
Было бы что особо понимать в зав типах. Там нет прям какой-то дикого мозголобия или особой математики
Да там нет ничего, кроме мозголюбия. Любой исходник на идрисе читается как латехный пейпер.
источник