Size: a a a

2020 December 15

AH

Ayrat Hudaygulov in F# Chat
Pavel
Узнал что есть параметр типа не только 'a но и ^a
Но не понимаю в чём разница (доку читал), когда и зачем нужен с ^a ?
это типы, ресолв констрейнов которых происходит в компайл тайме, а там можно более чОрную магию юзать, которой в рантайме нет
источник

AH

Ayrat Hudaygulov in F# Chat
вот например можно юзать дак тайпинг которого в рантайме нет
источник

P

Pavel in F# Chat
А можно плиз пример когда чтото можно токо через ^a ?.. и через 'a не сработает..
источник

AH

Ayrat Hudaygulov in F# Chat
Pavel
А можно плиз пример когда чтото можно токо через ^a ?.. и через 'a не сработает..
оператор + !
источник

AH

Ayrat Hudaygulov in F# Chat
это функция которая определена только для тех аргументов, в типах ОДНОГО из которых (любого) определен метод op_Addition который принимает эти самые аргументы
источник

AH

Ayrat Hudaygulov in F# Chat
как ты такое на генериках напишешь?
источник

P

Pavel in F# Chat
let inline add (x: 'a) (y: 'a) = x + y
add "aa" "bb" //норм
add 1 2 // тоже норм
источник

VS

Vasily Shapenko in F# Chat
Тут ты добавил инлайн
источник

VS

Vasily Shapenko in F# Chat
И там будет неявный сртп
источник

VS

Vasily Shapenko in F# Chat
Если что
источник

P

Pavel in F# Chat
Если убрать inline и через ^ то не скомпилится..
источник

Д

Дон Макароне🦜... in F# Chat
Ayrat Hudaygulov
это функция которая определена только для тех аргументов, в типах ОДНОГО из которых (любого) определен метод op_Addition который принимает эти самые аргументы
то есть ^a типо как тайпклассы работает?🤔
источник

AH

Ayrat Hudaygulov in F# Chat
Pavel
let inline add (x: 'a) (y: 'a) = x + y
add "aa" "bb" //норм
add 1 2 // тоже норм
ты использовал оператор +
источник

AH

Ayrat Hudaygulov in F# Chat
который и ЕСТЬ тот самый srtp
источник

AH

Ayrat Hudaygulov in F# Chat
Дон Макароне🦜
то есть ^a типо как тайпклассы работает?🤔
нет, но на них можно наговнякать
источник

AH

Ayrat Hudaygulov in F# Chat
эт просто ресолв в статике
источник

VZ

Vlad Zaa in F# Chat
Pavel
let inline add (x: 'a) (y: 'a) = x + y
add "aa" "bb" //норм
add 1 2 // тоже норм
Посмотри какую сигнатуру генерит. Это и есть сртп с констрейнтом
источник

VZ

Vlad Zaa in F# Chat
Ayrat Hudaygulov
нет, но на них можно наговнякать
Можно, но не надо 🤔
источник

AH

Ayrat Hudaygulov in F# Chat
Vlad Zaa
Можно, но не надо 🤔
ты это авторам fsharp+ скажи...
источник

VZ

Vlad Zaa in F# Chat
Ayrat Hudaygulov
ты это авторам fsharp+ скажи...
Ща там экстеншнны вмержим, там начнётся праздник
источник