Ayrat
хоспади, как все сложно в этой скале. даже жысон не попарсить. Circe эта ссаная, требует постоянно какие-то енкодеры, декодеры блять для типов объявлять, капризная пиздец, из стрима не умеет читать, надо весь жсон в память выгружать, вместо нормального json-path какая-то оптика на макросах, пойду в проституки короче
Ayrat
Error:(85, 46) could not find implicit value for evidence parameter of type io.circe.Decoder[services.CastarResponse] val response = decode[CastarResponse](jsonString).toTry
Диёр
а гсон или джэксон не юзаются со скалой?
Ayrat
Вот и ебись оно в сраку короче
Ayrat
а гсон или джэксон не юзаются со скалой?
ну вот я думаю к хуям выкинуть эту кирку и взять нормальный джексон
Ayrat
Зато наверное этой же штукой можно вместо жсон хмл парсить!
если она так же хмл парсит как жсон, то нельзя!
Nikolay
если она так же хмл парсит как жсон, то нельзя!
Так подожди, а она изначально точно для жсона была?
Nikolay
Может как раз для полета на Луну?
Ayrat
не исключено.
Ayrat
Вот я короче изобразил из себя сегодня генерик декодер чтобы руками их не писать (вот еще в 2020 руками за либу писать эту ссанину), а она не может теперь понять какие имплиситы юзать - встроенные, или мои То есть ты или берешь полуавтоматический вывод этих декодеров и какие-то свои добавляешь (не имплисит, а явно пропихиваешь), или полностью свои делаешь
Doge
Потому что из имплиситов тайпклассы хреновые получаются
Нормальные, надо знать подводные камни. С дотти будет проще, т.к. будут отдельные импорты под них
Ayrat
ну то есть мапер объявляется разок где-то в жебенях и дальше просто… парсишь?
Ayrat
ну как бы такой экспириенс и ожидается
Doge
а тем временем в jackson val mapper = new ObjectMapper() //could be static mapper.deserialize[SomeType](json) //json could be anything, Stream, String, File, whatever
Ага и получаешь в рантайме хрень, если какой-то кастомный тип попался
Ayrat
Ага и получаешь в рантайме хрень, если какой-то кастомный тип попался
Ну постой, у меня контракты. Если оно не может попарсить в тип который я подал, значит чот не так глобально
Ayrat
короче, я пока не оценил всей этой темы с полуручным парсингом. Объявлять эти декодеры/енкодеры ручками я не очень хочу Меня бы вполне устроил автовывод этих енкодеров киркой, который на макросах работает, но у меня есть группа фантомных типов на supertagged, для которых мой супер йоба имплисит конфликтует с кирковыми
Nikolay
Кстати в некоторых кейсах может быть и не помешало
Doge
о, а как?
https://docs.scala-lang.org/tutorials/FAQ/finding-implicits.html Если есть коты под рукой, то можешь там посмотреть как обходить приоритеты в их реализациях тайпклассов
Doge
о, а как?
https://typelevel.org/cats/guidelines.html Вот тут написано как в котах приоритеты выстраивают
Ayrat
Спасибо, прочитал. Не сказать что понял. Если сборка проекта зависит от фазы луны и приоритета имплиситов, куда-то не туда я свернул
Doge
Спасибо, прочитал. Не сказать что понял. Если сборка проекта зависит от фазы луны и приоритета имплиситов, куда-то не туда я свернул
Это плата за то, что если хочешь альтернативную реализацию тайпкласса, то не надо городить ньютайпы как в хаскеле
Ayrat
Беда какая-то кругом
Hog
Беда какая-то кругом
погугли картинок - люди волмарта!
Ayrat
Пойду джексон заведу, он один хер транзитивно подтянулся, хоть без дела стоять не будет всегда можно написать Try { parse } и получить на выходе Result
Ayrat
погугли картинок - люди волмарта!
это какой-то мемасик в штатах?
Hog
к программизму отношения не имеет :)
Doge
Беда какая-то кругом
Ну и то, и то - неудобства, вопрос что меньше нравится из этих вариантов. Одерски выбрал один вариант, в хаскеле/расте другой
Ayrat
@grishace WTF
Ayrat
чтоблятьпроисходит
Hog
:))))
Hog
настроение хотел тебе поднять
Hog
а то ты чот зашиваешься
Hog
в волмарте своём
TOV_MULTIMASSO
Происходит Волмарт
Ayrat
У меня на проекте просто есть джун, он скалист с энтузиазмом. Мне босс сказал быть помягше с людьми, позволять им иметь свое мнение. Вот короче его мнение в том, что нам нужна вся эта поебота на проекте. Я пока что пытаюсь быть “помягше” и вместе с ним хаваю все эти страдания с имплиситами, но меня наверное минут через 5 заебет окончательно и я опять превращусь в toxic russian
Anatoly
будешь ему писать «пiшов ты нахуй»?
этих буков нет в русском алфавите
Ayrat
Сейчас я в чате мягко спросил, а в чем киллер-фича кирки по сравнению с обычным джексоном
Anatoly
(я знаю, потому что когда я спросил, почему дартисты юзают вот эту хуёвую медленную либу, а не нормальную, так это потому что "вриттен ин дарт, а не тупая обёртка над обтимизированным бинарём на сях")
Ayrat
А в ответ получил ссылку на лекцию бартоша с таймкодом?
Не, пока тишина, может ищет ссылки хз. Меня тут не переспорить, я ведь написал что есть другой путь в одну строчку без страданий
Ayrat
то есть просто берем и парсим.
Ayrat
Ну, как это в 2020 принято
Ayrat
вот берем что угодно и десериализуем в тип. Большего от либы не надо. Если она заставляет тебя думать - плохая либа, негодная
Hog
я про "заставляет думать"
Hog
или мы только про парсинг?
Ayrat
Ой ну не. мне вот вечером думать как людей в фростпанке спасать, я на работу за деньгами хожу!
TOV_MULTIMASSO
да, вот это вот все
Я вот что скажу: в случае с хаскеллем, глобальной монадой приложения обычно является ReaderT BunchOfMutVars IO, или BunchOfMutVars -> IO a. Щас скалисты топят примерно за такую же архитектуру. И это при том, что хаскелльный оптимизатор за 25 лет научили эти трансформеры оптимизировать. Главное, чтобы он фримонаду и какую-нибудь Codensity не притащил. В случае скалы - это пизда рулю
Hog
про парсинг
тогда да
Ayrat
если б я каждый раз проекты начинал с обдумывания как добыть огонь, изобрести колесо, распарсить жсон - я б стал таким же старым как @grishace
Doge
вот берем что угодно и десериализуем в тип. Большего от либы не надо. Если она заставляет тебя думать - плохая либа, негодная
Ну чёрт знает. Главный плюс цирсе - можно сделать свой хитрый дерайвинг в строк 5 на шейплесе, если времени компиляции не жалко. Ну и ошибки на этапе компиляции
TOV_MULTIMASSO
Щас ещё придумали "системы эффектов", но там внутри просто адовая хуйня на типах
Doge
Мое почему-то подробная хрень часто бывает нужна и её тут делать проще, чем на рефлексии
TOV_MULTIMASSO
https://alvinalexander.com/java/jwarehouse/scalaz-7.3/core/src/main/scala/scalaz/Codensity.scala.shtml боже, ну и гадость эта ваша скала
Doge
Но я привычен к имплиситам, дышу ими, пью их, питаюсь ими
Ayrat
Ну чёрт знает. Главный плюс цирсе - можно сделать свой хитрый дерайвинг в строк 5 на шейплесе, если времени компиляции не жалко. Ну и ошибки на этапе компиляции
Возможно, пока что у меня задача, взять из жсона кусок, положить в другой жсон. Ну там чот посередине делается невзрачное, но в общем именно за такую работу мне платят 2 раза в месяц
Denis
говорят вредно смотреть котов
Denis
после этого астронавтами становятся