Диана
то что мертво умереть не может
Это ты так считаешь, а я вот год назад видела использование .net remoting для связки между нодами (в проекте 2019 года...) Некроманты среди нас. И воскрешают что ни попадя.
Vladislav
охты. не надо каждый раз кастить к ифейсу?
Это экстеншн метод обычный на самом деле
Vladislav
Как я понял
Vladimir
почти, он инлайненный
Диана
В F# каст интерфейсов не самый легкий - вызываются несколько проверок дополнительных, в отличие от c#.
Hog
а кстати - :?> быстрее?
Диана
Нет, все тоже самое.
Vladimir
В F# каст интерфейсов не самый легкий - вызываются несколько проверок дополнительных, в отличие от c#.
шарплаб не согласен) https://sharplab.io/#v2:EYLgxg9gTgpgtADwGwBYA0AbEAzAzmgExAGoAfCABxgDsACAZQE9cAXGAWwFgAoSmh5m3YA6AMIQMGGGBYBLCNVzCA4jRhRZYHi0ZVaogBQBKWgF4etS7XYdg62iwAWspQFljZ2has+pLWgieANqkAIwA3ABMpAC6tCAAfLQAkgCi1ACuNlAAhsBSADyy1CwJ3j6WCCowLOlZ6jks0MZAA==
Диана
Я со странным кастингом в F# столкнулась, когда в интерпретаторе поднимала целый паровоз из сервисов - куча сервисов регалась в стандартном ServiceContainer, потом он билдился в ServiceProvider, а потом не кастовался к IServiceProvider выдавая кастэксепшен с портянкой из рантайма фарша. Завтра пример этого кода кину.
Hog
ёр майлаж мэй вэри
Ilya
Акцент совсем незаметен.
Hog
Акцент совсем незаметен.
ю синк зис бэд нейборхуд?
Hog
А что - телеграм какое-то отношение к дойчебанку имеет?
Igor
а кстати - :?> быстрее?
Это downcast и он не проверяется в компайлтайме в отличие от upcast, в доке так написано
Крылатый
Hog
я не понимаю
Ayrat
https://twitter.com/realvictorprm/status/1225498214486462466?s=12
Я бы не был столь оптимистичен
Ayrat
Как мы знаем тайп экстеншны в том же файле компилится как члены типа сразу
Ayrat
Короче это может не работать если разнести по разным файлам
Ayrat
Что снижает ценность до нуля
Ayrat
А не, это ж экстеншн
Ayrat
Это downcast и он не проверяется в компайлтайме в отличие от upcast, в доке так написано
Он проверяет что тип справа наследник типа слева. И это в общем единственная проверка при даункасте!
Shub
Крылатый
Хотс годная игрушка
Dr. Friedrich
http://degoes.net/articles/insufficiently-polymorphic Скалошники считают, что нормальные имена переменных — не нужны и даже вредны.
Doge
http://degoes.net/articles/insufficiently-polymorphic Скалошники считают, что нормальные имена переменных — не нужны и даже вредны.
Так речь тут про то, что в достаточно параметрически полиморфном чистом коде у тебя очень много информации несёт сигнатура. Вплоть до того, что в некоторых случаях, реализация такой функции может быть выведена автоматически. См. parametricity и статью theorems for free!
Dr. Friedrich
В ней написано, что нормальные имена переменных — не нужны и даже вредны.
Dr. Friedrich
А вообще-то материал интересный, я потому и принёс.
Doge
Это же дегуз, он всегда так делает
Dr. Friedrich
Это вброс для привлечения внимания.
Это никакой не вброс, это буквально действительно то, что там написано.
Dr. Friedrich
И, ну, приводятся аргументы в пользу этого утверждения.
Dr. Friedrich
Это ровно то, как пишут код на скале 🤷‍♂️
Dr. Friedrich
Я не утверждаю, что мне в этом подходе что-то не нравится.
Dr. Friedrich
Просто, ну, в статье так написано, и аргументы вообще-то неплохие.
Doge
Это ровно то, как пишут код на скале 🤷‍♂️
Не знаю, пишу разумные имена переменных, каких-то больших проблем с этим в других библиотеках тоже не видел
Doge
Просто, ну, в статье так написано, и аргументы вообще-то неплохие.
Ничего не мешает писать полиморфный код и иметь понятные имена переменных, кроме фантазии.
Dr. Friedrich
Айрат показывает код, в котором обычно вообще имён нету
Dr. Friedrich
for { _ <- f _ <- x _ <- z } ()
Dr. Friedrich
Вот типикал код
Dr. Friedrich
https://github.com/zio/zio/blob/ed8b49eb4f529e7573726bae7d29d40a21948732/core/shared/src/main/scala/zio/ZIO.scala#L79 «Понятные имена», говорили они
Dr. Friedrich
final def absolve[R1 <: R, E1, B](implicit ev1: ZIO[R, E, A] <:< ZIO[R1, E1, Either[E1, B]]): ZIO[R1, E1, B]
Dr. Friedrich
Да, тут действительно трудно найти непонятные имена
Dr. Friedrich
Но только лишь потому, что трудно разобрать, где вообще в этой строке именуются сущности %)
Dr. Friedrich
Но, кажется, R1, E1 и B — это имена тут. Ну и ev1.
Dr. Friedrich
Хотя кажется, что там только с типами беда, переменные-то и правда более-менее толково названы
Anonymous
Nemerle скоро в коре и коде
Λ ll И K X
кому он нужен?
Anonymous
Всем кто интересуется a general-purpose, multi-paradigm programming language for the .Net platform.
Anonymous
Гораздо лучше выглядит как кандидат для написания надежных библиотек для C#(роль которую пророчили F#) из-за лучшей совместимости. Единственное, чего быть может нет в немереле это размерности(кг/м^3).
Anonymous
def factorial(n, acc) { | (0, _) | (1, _) => acc | _ => factorial(n - 1, n * acc) } def partedFactorial = factorial(_, 1); Console.WriteLine(partedFactorial(5));
Anonymous
Причем все это было еще в далеком 2006-ом.
Λ ll И K X
в общем никому не нужен
Doge
Да, тут действительно трудно найти непонятные имена
Так тут нет аргументов, значений или переменных. (импликит не считается, т.к. его по названию всё равно никто вызывать не будет)
Dr. Friedrich
Имплисит я тоже считаю
Dr. Friedrich
Ты вот как хочешь, а я считаю
Dr. Friedrich
Потому что мне часто, постоянно нужно знать, для чего его используют в том или ином коде
Dr. Friedrich
Да, вызывать по названию не будут, а вот понять его функцию — важно
Dr. Friedrich
Nemerle скоро в коре и коде
Я пока что не готов в него поверить
Dr. Friedrich
Пусть выкатят мне на Core SDK сборочки, тогда буду тыкать
Dr. Friedrich
А то обещают несколько месяцев уже, а результата ноль :(
Dr. Friedrich
Мне кажется, что Влад слишком много фокусируется на разработке IDE, и из-за этого непосредственно компилятор получает слишком мало внимания
Dr. Friedrich
А нужно отдельные фокусы иметь на портабельный тулинг (ну чтоб без плагина к IDE можно было получить компилятор и вот это всё, кроссплатформнно и портабельно), и отдельно уже IDE/редактор
Dr. Friedrich
Но можно надеяться, что в скором времени что-нибудь выкатят.
Dr. Friedrich
В этом году хотя бы :)
Doge
Имплисит я тоже считаю
У имплисита название важно в исключительных случаях. Т.к. чаще всего его ресолв идёт именно по типу.
Dr. Friedrich
Но я чаще всего читаю скалакод, а не пишу
Dr. Friedrich
И мне важны названия имплиситов, потому что я хочу понимать, что они делают
Doge
И мне важны названия имплиситов, потому что я хочу понимать, что они делают
Если имплиситы используются именно как тайпклассы, то это понимание целиком с типом связано.