Vasily
bouldering
Vasily
Силовые движения, мало перехватов, невысоко
ect"==typeof module.exp
Всем привет. Подскажите как определить класс который принимает тип 'T но только такой у которого определена функция, например ToInt()? Короче как обойтись без интерфейсов типа MyClass<'T when 'T implements ToInt(): int> =
Vasily
SRTP
Vasily
https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/generics/statically-resolved-type-parameters
Hog
это ты фцию сделал, а не класс
Vasily
Все он правильно сделал
Hog
Все он правильно сделал
Всем привет. Подскажите как определить класс который принимает тип 'T но только такой у которого определена функция, например ToInt()?
Hog
https://github.com/fsharp/fslang-suggestions/issues/641#issuecomment-361525358
Vasily
Ну вот вопрос, зачем тут тип
Vasily
Модуля должно хватить по идее
Hog
пишут, что оно и так работает
Hog
без интерфейсов
ect"==typeof module.exp
ect"==typeof module.exp
Почти получилось но не получилось
Hog
Почти получилось но не получилось
ты не красных червяков в редакторе показывай
Hog
собирается или нет?
Hog
там ещё один трик есть
ect"==typeof module.exp
неа, говорит не может разглядеть где у этого типа такая функция
Ayrat
сртп нельзя в дженерик параметры засовывать, потому что дженерики в РАНтайме, а сртп - в КОМПАЙЛтайме
Ayrat
на то они и СТАТИЧЕСКИ разрешимые параметры
Ayrat
ты даже такой код не скомпилишь type A< ^T when ^T : (member A: unit)> () = static member Test() = () тебе компилятор скажет This code is not sufficiently generic. The type variable ^T when ^T : (member Serialize : ^T -> string) could not be generalized because it would escape its scope.
ect"==typeof module.exp
победил
ect"==typeof module.exp
Надо было сделать ^T а не 'T, и лишний раз подсказать тип при вызове
Ayrat
member inline???
Ayrat
wtf
Hog
ну, я предполагаю, что интеропиться с этим классом будет весело
ect"==typeof module.exp
хорошо что мне не надо будет интеропиться
Ayrat
https://sharplab.io/#v2:DYLgZgzgPgtg9gEwK7AKYAIAqqIBd0C8AsAFDrq4CeADhgIIA86AepugO4AWqAdi2yHQAKGKhgAjVACd0dQUh4BLXAEoAfMJWFSpcuVETp6RT2AmMADwB02PEK0F0AIgCMTnWQo0MAMThxtT30xSRkAfTCrOkJND3I0fABDGMY/ODV7XXREmxxce3QoDQBlSjwxKwBhOB4IODQrAHUpZVQAGXMgA
Ayrat
ХМ
Ayrat
Оно одновременно инлайнит и сохраняет оригинальный inline метод рабочим для интеропа
Ayrat
Это какие-то новые горизонты говнокода
Hog
:))))
ect"==typeof module.exp
Это какие-то новые горизонты говнокода
Мне простительно, я даже примерно не программист.
Ayrat
Мне простительно, я даже примерно не программист.
не, речь не про тебя. Про мои горизонты!!11
Hog
не, речь не про тебя. Про мои горизонты!!11
горизонт - воображаемая линия
Vasily
Перспективы атомные (с)
ect"==typeof module.exp
Всё-таки интерфейс элегантнее.
ect"==typeof module.exp
Чего же они duck typing не завезли
Ayrat
Нет, рано радовались
Ayrat
это потому что в этом инлайне нет СРТП он в рантайме сохраняется
Ayrat
как только намазать туда - всё по пизде идёт
Vasily
Кстати да
Ayrat
https://sharplab.io/#v2:DYLgZgzgPsCmAuACAlgO2G2j4AtkQEkIA5Ae3gGUBXABxtICd5YATAIQE8AlK1eZALZYAhogC8AWABQiWYgAUAPWEgFQgQCNYDRAEFVEeAzQBzAJSJhZ6dIGkWVOIgAqsQ+JszsHGll0AeREVnRAB3HFhUIJDVeXUtHX1EQ2NUcwA+BQtJKWk5RHjtFHRMRAB9MoA6V3dRHPyGpRU1WE0ipJTTCytPWXgfLAAxUlJ5bLy5Qp0Kyt1xRAAiMBGF3sQ4JGXSeeHR6y9cfCIySlp6JlZOHj5BLC3EKEyKDkNWyoBhUlQIUjhKgHVjMwADKYNYbSzzAK7dJjCbCapuTYjB5PF7MAQfL4/P6A5AgzBAA=
Vasily
Не сртп же
Ayrat
Так оно работает?)
Ну наверное да, но без интеропа
Vladislav
Ну наверное да, но без интеропа
Инлайн методы не видно?
Vladislav
Из сишорпа
Romɑn
Что это за финя?
Romɑn
https://7sharp9.github.io/2019/04/24/2019-04-24-applied-metaprogramming-with-myriad/
ect"==typeof module.exp
Короче всё зря. Попытался расширить существующий тип (Int32) этой функцией, и компилятор не принимает, походу все эти приаттаченные функции в счёт не идут :(
Romɑn
Кодген для протобафа?
но не только же
Romɑn
dotnet/spark .NET for Apache® Spark™ makes Apache Spark™ easily accessible to .NET developers. C# 666
Romɑn
666 жвежд
Vladislav
Слава сатане
Hog
Слава сатане
фу какие вы
Romɑn
Hog
изыдьте! демоны
Romɑn
изыдьте! демоны
https://github.com/dotnet/spark/blob/master/examples/Microsoft.Spark.FSharp.Examples/Sql/Basic.fs F# first class
Vladislav
Romɑn
Functions.Udf<Nullable<int>, string, string>(
спряч за БИЛДЕРАМИ и все
Vladislav
нусорян
Да я не шеймю их)
Vladislav
Спасибо что есть
Vladislav
Вообще
Romɑn
ну таки дя
Hog
https://www.youtube.com/watch?v=fsF7enQY8uI
Hog
я думаю, что эти - что-то типа mechanical turk
Shub
Короче всё зря. Попытался расширить существующий тип (Int32) этой функцией, и компилятор не принимает, походу все эти приаттаченные функции в счёт не идут :(
Я вчера имел точно такую же проблему. Правда, мне хватило 20 минут, чтобы разобраться, шо в дотнете так не получится