Vasiliy
плохой код или работает медленно?
Ayrat
и если ты думаешь что макросы это препроцессор как в сишечке со string.replace. то ты ошибаешься
Roman
во, а почему?
как минимум способности куцые. Не умеет даже фшарповые рекорды генерить
Roman
и из типов не умеет генерить почему-то
Ayrat
это считай как генерики. были типы, а есть типы, которые зависят от типов есть код. а есть код высшего порядка - когда код может делать код
Ayrat
то есть ты можешь убрать тонну бойлерплейта кодом который пишет код
Ayrat
во, а почему?
чтобы их сделать надо обладать недюжинными познаниями и терпением. то есть это не обычный макрос как в скале, который в общем любой может написать И поэтому многие тайп провайдеры говно
Roman
это считай как генерики. были типы, а есть типы, которые зависят от типов есть код. а есть код высшего порядка - когда код может делать код
вот интересно, в расте сериализация на макросах сделана, как я понимаю. А как оно сериализует типы, которые не были известны на момент компиляции?
Ayrat
при этом они не умеют генерить интерфейсы например (почему?)
Roman
в дотнете для этого есть метадата, а в расте как?
Ayrat
Крутая штука, но это некст левел😊
ну так зачем останавливаться тем более технологии скоро сто лет стукнет
Ayrat
через 20 лет!
Igor
вот интересно, в расте сериализация на макросах сделана, как я понимаю. А как оно сериализует типы, которые не были известны на момент компиляции?
> А как оно сериализует типы, которые не были известны А как это возможно 🤔 в rust же все компилируется
Tako
то есть ты можешь убрать тонну бойлерплейта кодом который пишет код
если вы про сорс генераторы,то есть небольшая пометочка,они не могут модифицировать твой код
Ayrat
сорс генераторы конечно хуита
Ilya
Если это нишевая технология - особо от генераторов не отличается
Tako
сорс генераторы конечно хуита
я чето пару докладов посмотрел и там больше болтовни было чем делов
Ayrat
Наверное есть недостатки
конечно есть, увеличенная сложность. раньше было все просто, с макросами все сложнее
Ilya
А писать их инплейс в коде - для простых вещей ок, для сложных - хз
Ayrat
Если это нишевая технология - особо от генераторов не отличается
макросы очень распространенная технология. но в дотнете будут строки -_-
Roman
А откуда у тебя возникнет тип не известный на этапе компиляции?
во, я еще слишком прибит мозгами к виртуальной машине
Ayrat
потому что фшарп вроде как щас будет тоже интеропиться с этой хуитой
Doge
макросы очень распространенная технология. но в дотнете будут строки -_-
Самое главное, что уже есть считай готовый инструмент в виде рослина. Дай к нему апи и макросы goes brrrrr
Doge
В макросах есть доступ к АСТ ?
Да, считай во всех, за исключением сишных
Ayrat
В макросах есть доступ к АСТ ?
это еще в лиспе было лол
Ayrat
В ЛИСПЕ
Sergey
сишные макросы как стиль искусства
Ayrat
загугли сколько лет лиспу
Roman
@DogeShibu когда в расте какой-то пакет подрубаешь — прям целиком исходники въебываются по факту или какой-то артефакт компиляции?
Doge
Дак апи есть🤔
Только дать это апи в контексте макросов
Ilya
Хорошего макроса
Ayrat
Покаж пример
любой макрос из раста посмотри
Ayrat
или скалы
Ilya
любой макрос из раста посмотри
Скинь ссылку, если не трудно
Ilya
А то я какое то говно найду
Ayrat
https://doc.rust-lang.org/book/ch19-06-macros.html
Ayrat
ну например
Doge
https://doc.rust-lang.org/book/ch19-06-macros.html
Это не про те макросы, что нужно
Ayrat
Это не про те макросы, что нужно
там макросы есть которые имеют доступ к сорцам
Doge
В расте есть процедурные макросы и макро правила.
Doge
Но тоже с ограничениями
Doge
Покаж пример
http://dotty.epfl.ch/docs/reference/metaprogramming/macros.html
Ayrat
про макро правила на той же странице
Ayrat
в фшарпе есть зачатки для макросов в виде сплайсов и квотейшнов
Ayrat
но т.к. нет быстрого преобразования квотейшна обратно в код это все фигня
Ilya
Но! Для генерации сериализаторов, как по мне, подходит не очень хорошо
Ilya
Или для генерации прокси объектов
Vladislav
но т.к. нет быстрого преобразования квотейшна обратно в код это все фигня
Ну там есть от царпалиса всякие либы, но это должно быть в сам компилятор встроено
Ayrat
так точно
Vladislav
Но запроса особо нет
Ayrat
case class Device(id: Int, model: String) case class User(name: String, devices: Seq[Device]) implicit val codec: JsonValueCodec[User] = JsonCodecMaker.make
Ayrat
первые две строки - твои модели
Ayrat
третья строка - собсно сериализатор
Ilya
Это прям норм тема
Но такое в с# вряд ли сделают в ближайшие 5 лет, это всё таки не хипстерский f#
Ilya
да бля, все там можно
Можно, если вся команда рослина будет работать 5 лет назад ними
Ilya
Чтобы всё работало нормально
Ilya
А то если получится как с nullable reference ты опять будешь хейтить
Ayrat
ты шутишь
Ayrat
ой все короче