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
Ayrat
Hog
это ты фцию сделал, а не класс
Vasily
Все он правильно сделал
Hog
Все он правильно сделал
Всем привет. Подскажите как определить класс который принимает тип 'T но только такой у которого определена функция, например ToInt()?
Vasily
Hog
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
там ещё один трик есть
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, и лишний раз подсказать тип при вызове
Hog
Ayrat
member inline???
Ayrat
wtf
Hog
ну, я предполагаю, что интеропиться с этим классом будет весело
ect"==typeof module.exp
хорошо что мне не надо будет интеропиться
Ayrat
https://sharplab.io/#v2:DYLgZgzgPgtg9gEwK7AKYAIAqqIBd0C8AsAFDrq4CeADhgIIA86AepugO4AWqAdi2yHQAKGKhgAjVACd0dQUh4BLXAEoAfMJWFSpcuVETp6RT2AmMADwB02PEK0F0AIgCMTnWQo0MAMThxtT30xSRkAfTCrOkJND3I0fABDGMY/ODV7XXREmxxce3QoDQBlSjwxKwBhOB4IODQrAHUpZVQAGXMgA
Ayrat
ХМ
Ayrat
Оно одновременно инлайнит и сохраняет оригинальный inline метод рабочим для интеропа
Ayrat
Это какие-то новые горизонты говнокода
Hog
:))))
Vasily
Ayrat
Hog
Hog
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
Не сртп же
Vladislav
Vladislav
Vladislav
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) этой функцией, и компилятор не принимает, походу все эти приаттаченные функции в счёт не идут :(
Vladislav
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
Vladislav
Romɑn
Romɑn
Vladislav
нусорян
Да я не шеймю их)
Vladislav
Спасибо что есть
Vladislav
Вообще
Romɑn
ну таки дя
Hog
https://www.youtube.com/watch?v=fsF7enQY8uI
Hog
я думаю, что эти - что-то типа mechanical turk
Shub