Vasily
за совращение тоже есть статья
Ну,во- первых, современную молодежь, кмк, разврату учить не надо. Сами кого хошь научат
Dmitry
@vshapenko а насколько часто подобные щедрости на вакансии?
Dmitry
Пользуйся этим случаем
у меня завтра первый выход на работу :D
Dmitry
на всякий случай уточню, что на новую работу :) со старой еще в феврале ушел
Dmitry
но все равно спасибо
Dmitry
фшарп?
нет, сшарп
Диёр
Пользуйся этим случаем
Пару лет назад с радостью бы пошел)
Диёр
Ну на совсем джуна мне зп не очень понравится, думаю
Диёр
А так пошёл бы по фану
Hog
я, вот, не умею :(
Диёр
торговаться нужно :(
Ну я в Ташкенте родился, я умею торговаться)
Диёр
Но тут не тот случай, думаю
Андрей
торговаться нужно :(
я тут загнал планку до неприличия, думал не возьмут так не возьмут, а они взяли и взяли сцуки. Выгораю терь уже год с цышарпистами :(
Hog
я это так - для задержки выгорания :)
Vladislav
Я пытался
Vladislav
Оно все очень странное
Hog
Оно все очень странное
а кому сейчас легко?
x
Проверил
ну вот, разрушил все мои надежды
Bonart
Мне вроде пока не за что, хотя если задаться целью...
Если любого мужика за 30 взять и посадить в тюрьму без объяснений, в глубине души он будет точно знать, за что.
x
такие новости.
Bonart
https://github.com/louthy/language-ext
Там товарищ слишком уж охаскелился - положил болт на правила именования и т.п. При этом любит пятиэтажные генерики с явным указанием типов-параметров
Bonart
а как в сишарпе не указывать пятиэтажных генериков?
Заставить работать вывод типов. Но тут уже мастерство ;)
x
иногда это попросту невозможно
x
Пример?
пожалуйста https://stackoverflow.com/questions/49446078/why-do-i-have-to-explicitly-specify-my-type-arguments-for-func-parameters/
x
это я полтора года назад возмущался )
x
This isn't a matter of the C# team being lazy... type inference is hugely complicated, and any change is really fraught with danger in terms of backward compatibility.
Bonart
Заверни Func в структуру с теми же параметрами.
Bonart
public void IndexableSumArrayBenchmark() => _array.AsIndexable().Sum(0.AsAdditive());
Bonart
Теперь смотрим на метод Sum :)
Bonart
public static Additive<T, TSummator> Sum<T, TSummator, TIndexator>( this Indexable<T, int, TIndexator> indexable, Additive<T, TSummator> initial) where TIndexator : IIndexable<T, int> where TSummator : ISummator<T> { var result = initial; for (var i = 0; i < indexable.Count; i++) result += indexable[i]; return result; }
Bonart
Трехэтажный генерик видишь?
Bonart
А в вызове ни одного явного типа нет
Bonart
public static class ArrayIndexable { public static Indexable<T, int, ArrayIndexable<T>> AsIndexable<T>(this T[] array) => new Indexable<T, int, ArrayIndexable<T>>(new ArrayIndexable<T>(array)); }
x
чот нихера непонятно, надо будет вчитаться на досуге )
Bonart
public static class IntAdditive { public static Additive<int, IntSummator> AsAdditive(this int value) => Additive<int, IntSummator>.Wrap(value); }
Bonart
Вывод типов в сишарпе чахоточный
x
в любом случае, если это решаемо - контрибуть!
Bonart
Делегаты он не выводит, а вот классы и структуры - пожалуйста
Bonart
Класс как обертка - ацтой, ибо аллокации
Vasily
Структуры это тоже память
Bonart
А вот в структуру надо заворачивать все, что само не выводится
Bonart
Структуры это тоже память
Структура с одним полем стоит ровно ноль по сравнению с типом поля
Bonart
На этом весь расчет
Bonart
в любом случае, если это решаемо - контрибуть!
Куда? Для language-ext я в ихней теории слабак
x
ну так причём тут хаскелизм головного мозга, если в сишарпе так выводятся типы
Bonart
ну так причём тут хаскелизм головного мозга, если в сишарпе так выводятся типы
Я же сказал, причем - товарищ забил на соглашения об именовании. Его код неродной для любого шарп-проекта
Bonart
а что там у него, я не помню. Методы с маленькой буквы?
Ага, интерфейсы без I, типы-параметры без T.
Bonart
Явные типы-параметры он просто недокрутил - это уже не хаскелизм, а скилла в шарпе не хватило
x
хм, он предлагает какие-то интерфейсы имплементить? а типы-параметры вообще чем мешают использованию?
Bonart
ВСЕБОЛЬШИЕБУКВЫ в типах-параметрах
x
я думаю надо меньше смотреть в код либы, ужасаясь, а просто её юзать )
Vladislav
Лучше не юзать
Vladislav
От кода ужасаться будешь
Bonart
Сблевнуть не тянет? А это еще простейший кейс
Bonart
Оно при этом под массив еще и не оптимизировано ни хрена
x
public async Task<IReadOnlyCollection<DM.InvoiceAllocated>> GetInvoicesAllocatedAsync(int invoiceId)
x
вот обычный метод обычного репозитория на сишарпе
x
вижу трёхэтажный генерик, ничего сделать не могу
Bonart
а что тут плохо?
4 явных типа параметра при каждом вызове надо указывать. Теперь представь, что один из них а) генерик, б) трехэтажный, в) анонимный
x
т.е. в вызове генерики нельзя, а в сигнатурах льзя
x
и когда я разбиваю большой метод на кучу подметодов, в каждом идиотически указывая эту трёхэтажную дуру - то это норм, приемлемо, идиоматичный сишарп