Ayrat
Теперь все встало на свои места
пошёл кодить на скале с осознанием этого печального факта?)
Ayrat
ну собсно то что он поиск мамки в листе интов не подсвечивает как ошибку - те же корни
Ayrat
дженериков нет, пизда стат анализу
Ayrat
Но самый конченый
Ayrat
это конечно toSet
Andrew
Скинул рофлы из скалы в одну беседу где много жсров, они пожали плечами и сказали "ну в любом языке есть недостатки"
Andrew
Я чет орнул
Ayrat
т.е. вот ожидать что эта ебанина тебе bool вернёт
Ayrat
это прям пахнуло гошечкой
Andrew
это конечно toSet
А какое логическое обьяснение этому?
Ayrat
А какое логическое обьяснение этому?
я не уверен что до конца понял. Потому что эта дикая срань
Ayrat
попробуй сам понять по этому таймкоду https://www.youtube.com/watch?v=uiJycy6dFSQ&t=29m20s
Ayrat
но типа на самом деле строка выглядит так (List(1,2,3).toSet) ()
Ayrat
заметь как я расставил скобки
Andrew
))
Ayrat
далее вступает в силу тайп инфиренс скалы, который видит справа поиск () в результирующем сете, а юнит имеет тип Any, значит и List на самом деле List<Any> потому что может (ковариантность, как List<int> :> List<object>)
Andrew
() это тоже юнит в скале?
Ayrat
т.е. ты получил List<any>....toSet? получаешь Set<Any>
Ayrat
далее ты ищешь в нём () юнит и не находишь
Ayrat
получаешь false
Andrew
Ну и в нем юнита нет. поэтому фолс
Andrew
Понял
Andrew
Ну это конечно заебись
Ayrat
Это прям некст левел булщит
Aleksandr
недавно разбирал один ml код и увидел там запись типа match !x with | true -> ...
Aleksandr
как же тяжело было после си сообразить, что ! - это не отрицание)
Aleksandr
языки такие языки
Ayrat
языки такие языки
полезно знать разные
Aleksandr
именно
Ayrat
перестаёшь думать что язык X идеальный
Sergey
перестаёшь думать что язык X идеальный
И пиши на жвм. Пересядь с иглы дженериков в рантайме
Vasily
В скале просто erased types
Vasily
Ну шо вы начинаете
Vasily
Нет там информации о типах в рантайме
Vasily
В жвм*
Да, это и имел в виду
Vasily
Поэтому можно сделать вывод, что скала - это такой жс на стероидах
Ayrat
а не, правильно
Ayrat
не, именно что с дженериков в рантайме надо пересаживаться когда в жвм приходишь
Ayrat
их же именно там и нет
Ayrat
Поэтому можно сделать вывод, что скала - это такой жс на стероидах
как тайпскрипт, вроде всё нормально пока не пиздец
Ayrat
я имел в виду что тайпскрипт защищает не прям уж дохуя. гарды в функциях они только для компилятора. Ну как в F# единицы измерений
Ayrat
т.е. их можно только между F# кодом таскать
Ayrat
в рантайме никаких чеков
Ayrat
если функция принимает только метры, то в рантайме ты можешь туда и сантиметры засунуть изи!
Ayrat
например вызвав эту сборку из C#
Sergey
например вызвав эту сборку из C#
Скоро и о рублях забудешь будешь фунтами орудовать🌚
Aleksandr
А что, разве в Haskell hkt существует без type erasure?
Ayrat
Скоро и о рублях забудешь будешь фунтами орудовать🌚
да пиздец. у местных клав лейаут нечеловеческий
Ayrat
вместо решетки евро блять
Ayrat
А что, разве в Haskell hkt существует без type erasure?
у хаскеля свой мир, у него нет гига рантайма откуда можно тягать говно
Ayrat
как JVM или .NET
Ayrat
т.е. в жвме-то можно жава либки подтягивать в скалку, может быть обратно тоже
Aleksandr
Ах да, хаскелл нэйтив же
Ayrat
т.е. сборки собранные разными компиляторами работают друг с другом по правилам рантайма
Ayrat
Ах да, хаскелл нэйтив же
он и под ллвм умеет
Ayrat
это вообще неважно
Ayrat
мой поинт в том что даже если они намазывают метаинформации вокруг типов то т.к. основной комплиятор один, то стирание типов даже если оно есть, похуй вообще
Ayrat
если б у нас был только F# и ничего кроме, то единицы измерений были бы охуенны, даже со стиранием типов. А так, сишарперам эти сборки не дашь
Анна
он и под ллвм умеет
это ж и есть нэйтив
Ayrat
это ж и есть нэйтив
Ну в целом, да
Ayrat
Я кстати хз как ллвм относится к генерикам в своим мире
Анна
по-моему у него IR ниже уровнем, так что какие ещё дженерики. Но я что-то вот залипла, потому что никогда про это не думала
Анна
Sergey
Я кстати хз как ллвм относится к генерикам в своим мире
В расте ж вроде ллвм и там вроде есть дженерики в рантайме (хотя я не шарю)
Doge
это примеры, которые показывают что в скале есть проблемы
Это не проблемы скалы как таковой. Это проблемы стандартной библиотеки скорее и некоторых граничных случаев. И на практике они очень редко стреляют. Я даже с ходу не вспомню, когда напарывался.
Doge
Я думаю что привыкнуть можно даже к этому. Как-то ж люди на жсе пишут
Вот эти примеры вообще не стреляют, их в жизни не увидешь
Ayrat
В целом, в целом, я считаю скалу хорошим языком. Она делает всё возможное из доступного
Doge
Стреляют обычно другие вещи
Doge
В каждодневной разработке скорее стреляет то, что в джетбрейнс скала плагин разламывают каждый месяц, ну и то, что некоторые сложные случаи при использовании импликитов отлаживать бывает сложно.
Doge
В целом, в целом, я считаю скалу хорошим языком. Она делает всё возможное из доступного
Ну а по поводу стирания типов и дженериков - тут я даже не знаю. Сложный трейдофф, с одной стороны стирание типов дает возможность другим языкам на платформе использовать более сложные системы типов, а с другой стороны костыли в рантайме ещё те.
Doge
Ну они говорилм что его сложно пилить и там постоянно весеьлье изза имплиситов и макросов
Ну они, кстати, при этом более-менее справляются. Меня скорее смущает количество регрессов, приходится на старых версиях достаточно долго сидеть или наборот всегда на nightly, где всё непредсказуемо.
Andrew
Ребят, как лучше обьединять между собой async и result билдеры?