Vasily
Там np полная задача
Ayrat
если чо
Vasily
В случае скалы
Ayrat
я кстати не читал про его алгоритм. знаю что он на бумаге должен быть проще, так как у него нет бектрекинга, он типы только в одну сторону пропагирует
Ayrat
мне казалось должно быть быстрее
Ayrat
при этом фшарп развивает HM но ограничивает его из-за сабтайпинга, который он не выводит вообще и просит выводить руками
Ayrat
короче, скала норм если не пользоваться фичами скалы
Vladislav
Ayrat
я тут вчера говна поел на интеропе. Они ж клёвые, все типы свои объявили
даже Double
Vladislav
Ayrat
то есть например есть апишечка из жаба либы
CompletableStage<Optional<java.lang.Double>>
(типа пагинируемый асинк, внутри опшанл дабл)
а мне надо
Future<Option<scala.Double>>
Ayrat
то есть даже Optional vs Option надо мапить друг в друга
Ayrat
вот это БОЛЬ
Ayrat
и при этом по умолчанию в скале нихуя нет для конвертации и интеропа
Ayrat
это вам не Сайм в общем
Ayrat
берегите его
Анна
тяжела и неказиста жизнь ирландского скалиста
Ayrat
Vasily
В Дублине потому и много пабов
Диёр
Roman
Doge
Doge
Чтобы можно было делать "MyObject is " + myObject + "!", до того как было интерполирование строк.
Это старое скаловское легаси, вроде бы в дотти выпилят.
Roman
type ToSome = ToSome with static member ($) (ToSome, (i: 'a)) : Option<'a> = i |> Some
type ToNone = ToNone with static member ($) (ToNone, (_: 'a)) : Option<'a> = None
type FromSome = FromSome with static member ($) (FromSome, (i: Option<'a>)) : 'a = i |> value
штош такое то а
Doge
Roman
все измазано этим фшарп плас
Vasily
Roman
процентов 40% кода это так или иначе какие-то Utils и Misc
Vasily
Ну шо поделать
Nikolay
Использовал кто Roslyn? Как проект открыть? 🤔
Пытаюсь через MSBuildWorkspace, он сдувается, пишет такое:
{[Сбой] Сбой Msbuild при обработке файла "C:\Users\Desktop\NZMWeb\nzm\NZMWeb.Data\NZMWeb.Data.csproj" с сообщением: The tools version "Current" is unrecognized. Available tools versions are "14.0", "2.0", "3.5", "4.0". C:\Users\Desktop\NZMWeb\nzm\NZMWeb.Data\NZMWeb.Data.csproj}
Roman
да шо делать, чистить вилкой это
Vasily
Когда много сильно дохуя умных
Vasily
Все вот так вот
Roman
когда настроение "ебаный художник"
Фил Ранжин
статья зашла. Похоже, про собесы моржно всё что угодно писать - схавают
Фил Ранжин
нет. У меня была статья, которая говорила что предметная область и безнес говно, а разрабы центр вселенной, и её захейтили
Фил Ранжин
при этом написал я её так же хорошо, как и остальные
Doge
Vladislav
Roman
Roman
я только наемный работник, который пришел в проект позавчера почти
Roman
Да неопытность просто
Roman
Жалуются на то, что в фшарп слабая система типов, но при этом даже то, что есть используют не на полную мощность и через жопу зачастую
Doge
Просто если хочется хаскеля, то не больно его можно сделать либо на хаскеле, либо умеренно больно на скале.
Всё. Везде в других местах - это ужасающе получается, хак на хаке на хаке.
Anatoly
это, кстати, хорошее техническое демо потенциальным бизнес-заказчикам
Roman
Roman
поэтому потихоньку буду выпиливать это по мере возможности
Roman
хорошо хоть, чувак действительно готов слушать другую точку зрения
Doge
Roman
будто если б был ХКТ, то такое говно улетучилось само собой
Doge
Vasily
Проблема в том, что в большинстве случаев система типов аля хаскель не даёт ощутимого преимущества
Roman
Vasily
Т.е. профита от нее мало
Roman
а тяжесть тестирования вполне ощутимо сказывается, в отличие от нехватки GADT всяких)
Doge
тестировать такой код это пиздец
Ну и тут стандратная разница - если инфраструтурные ошибки, то лучше их тогда исключением и в закат.
Если бизнесовые, то да, Either + DU
Roman
Vasily
Roman
я это в первый же день сказал
Roman
говорю, не нужен вам стектрейс для ошибок валидации или нарушения бизнес правил
Roman
но нет
Roman
исключения харам
Doge
Проблема в том, что в большинстве случаев система типов аля хаскель не даёт ощутимого преимущества
Смотря какой кусок:
Тайпклассы + дерайвинг (включая кастомный) - это дикий буст продуктивности в куче очень часто встречающихся мест без всяких потерь в производительности.
ХКТ - требуется на данный момент, если хочешь более-менее разумный контроль эффектов иметь.
Плюс всякие клевые трюки типа Higher Kinded Data, которые тоже иногда могут сотни и тысячи строк бойлерплейта сэкономить.
Doge
исключения харам
Никогда этого не понимал.
Может ткнуть таких людей носом в то, что в хаскеле исключения юзаются повсюду?
Doge
Если уж ФП хардкор и т.п.
Roman
Roman
не, там мотивация немного другая. Хотя тоже очень странная
Roman
типа "ща все однообразно. Ошибка всплывает наверх и все ок"
Roman
мои попытки объяснить, что с исключениями все будет так же однообразно, только еще и вменяемый стектрейс нахаляву, да еще и код будет почище, пока не увенчались успехом
Roman
но я на полпути уже, что в общем неплохо
Doge
типа "ща все однообразно. Ошибка всплывает наверх и все ок"
Ну а так бизнесовые ошибки всплывают как раньше, инфраструктурное ловится одним хэндлером выше.
Но тут вопрос, чтобы функция отражала, что она может что-то бросить.
Чаще всего инфраструктурные ошибки идут около всякого IO, так что можно считать, что любое место, где есть async - может бросить исключение.
Будет как хаскель, только вместо IO - async