Size: a a a

2021 June 11

Q

Qwerty in Haskell
ага, это для меты норм, но не для регулярного кда
источник

к

кана in Haskell
чтобы в хаскеле нормально сделать аналог такого, нужно или сделать кодогенерацию, или в template haskell ходить в сеть, выкачивать схему, парсить и генерировать код
источник

¯

¯\_(ツ)_/¯ in Haskell
ну сгенерировать надо один раз, пользоваться много раз. так что кодогенерация
источник

¯

¯\_(ツ)_/¯ in Haskell
там у гугла какое-то решение есть (https://github.com/google/ghc-source-gen)
источник

к

кана in Haskell
да и темплейхаскель можно закэшировать при желании, чтобы он только один раз ходил
источник

AF

Alexey Fedotov in Haskell
ХЗ, мне кажется, тут ошибка в том, что на уровень программы пропихивается то, что должно быть данными
источник

¯

¯\_(ツ)_/¯ in Haskell
это интересно, конечно, но ведь лучше, если в compile time будет понятно, что взаимодействие с API идёт не так, как требуется?
источник

к

кана in Haskell
а без этого никак

мы на уровне программы знаем что нам нужно отправить сообщение

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

мы находим, видим пачку аргументов, теперь нужно понять семантику, что каким аргументам соответствует
источник

к

кана in Haskell
и приходим к тому, что хоть какое-то зафиксированное знание апи нам нужно на уровне программы
источник

к

кана in Haskell
а апи меняется, постоянно, и его постоянно правят, причем тривиально из обновления схемы. Напрашивается вывод, что тут идеоматичен именно кодген (не важно, ручной или компайлтайм в виде темплейт-хаскеля)
источник

AF

Alexey Fedotov in Haskell
да, но это знание можно зафиксировать в самих данных (в метаданных т.е.)
источник

AF

Alexey Fedotov in Haskell
про компайл-тайм надо подумать
источник

JS

Jerzy Syrowiecki in Haskell
почему это ошибка?
источник

AF

Alexey Fedotov in Haskell
потому что приводит к ситуации, когда приходится генерировать однообразный шаблонный код, т.к. руками это записать нереально
источник

SP

Stanislav Popov in Haskell
если вы почитаете философию питона получше то она окажется лютым мусором
источник

SP

Stanislav Popov in Haskell
например идиоматично использовать трай кетч вместо ветвлений - это питонофилософы изобрели такой бомже-матч
источник

¯

¯\_(ツ)_/¯ in Haskell
в vk sdk for android генерировали. понятно, что я сейчас ссылаюсь к авторитету, но я не хочу показать, что это лучший способ, лишь хочу показать, что так делают даже в самом ВКонтакте
источник

SP

Stanislav Popov in Haskell
все эти *args, **kwargs это идиоматический питон.
кодинг на стейтментах, отсутствие многострочных лямбд, запрет юзать лямбды вообще как идиоматически-неправильную конструкцию
источник

AF

Alexey Fedotov in Haskell
ну не знаю, я джунам часто на неё ссылаюсь. Плоское лучше вложенного — из этого вытекают всякие полезные штуки вроде "обрабатывать исключительные ситуации раньше стандартных", а если им явно не говорить, что надо стараться писать плоско, накручивают и пятый, и шестой уровень запросто
источник

SP

Stanislav Popov in Haskell
ну и последние веяния ебанатики - матч-не-экспрешен
источник