Size: a a a

2021 March 03

AH

Ayrat Hudaygulov in F# Chat
ОКЕЙ
источник

AH

Ayrat Hudaygulov in F# Chat
:D
источник

AK

Alexandr Krotov in F# Chat
ну, я пока не сильно в этом разбираюсь 😆подключены
open Mutagen
open Mutagen.Bethesda
open Mutagen.Bethesda.Skyrim
open Noggog

в си шарпе оно с такими же работает
саму функцию он вроде как тоже видит
источник

AK

Alexandr Krotov in F# Chat
Все тут лежит по идее
источник

AH

Ayrat Hudaygulov in F# Chat
Так, дело в ковариантности
источник

AH

Ayrat Hudaygulov in F# Chat
источник

AH

Ayrat Hudaygulov in F# Chat
в общем можно простое репро и без нугета соорудить. в фшарпе нет ковариантности, да
источник

AH

Ayrat Hudaygulov in F# Chat
поэтому IEnumerable<A> не является наследником IEnumerable<B> если A наследник B
источник

AH

Ayrat Hudaygulov in F# Chat
чинится так
open System.Linq

fail
 .Cast<IModGetter>()
 .WinningOverrides<IBar>()
источник

AH

Ayrat Hudaygulov in F# Chat
источник

AK

Alexandr Krotov in F# Chat
так, ну теперь я знаю что такое ковариантность, и что в фшарпе ее нет 😆спасибо, попробую
источник

AK

Alexandr Krotov in F# Chat
А где-то прочитать про нюансы использования библиотек написанных на c# в f# можно? или такие вещи просто с более глубоким знанием языка придут
источник

AH

Ayrat Hudaygulov in F# Chat
Alexandr Krotov
А где-то прочитать про нюансы использования библиотек написанных на c# в f# можно? или такие вещи просто с более глубоким знанием языка придут
нюансы в основном в обильных имплисит кастах которые в фшарпе часто приходится делать явно (как в примере выше)
источник

AK

Alexandr Krotov in F# Chat
Действительно, спасибо большое!
источник

AK

Alexandr Krotov in F# Chat
Подозревал что нужно явно указать, но знаний пока не хватает
источник

AK

Alexandr Krotov in F# Chat
Пришлось немного дополнить с Cast<IModGetter> до Cast<IModListing<IModGetter>> иначе валился в эксепшен от каста, но тут уже по примеру просто посмотрел что конкретно ожидает функция, спасибо еще раз)
источник

ДБ

Дмитрий Башинский... in F# Chat
Доклад хороший как знакомство с F# но не очень применим потом
Такие доклады немного в другом мире, показывают примеры с option, result и без асинков, а именно AsyncResult удобно юзать к примеру в том же репозитории и не только удобно, а нужно, так как IO
А еще скот показывает как классно функции в функции передавать, и передает функцию получения юзера (string -> User), но это ж не честный пример, а (string -> Async<Result<User>>) особо не поинджектишь
источник

AH

Ayrat Hudaygulov in F# Chat
Дмитрий Башинский
Доклад хороший как знакомство с F# но не очень применим потом
Такие доклады немного в другом мире, показывают примеры с option, result и без асинков, а именно AsyncResult удобно юзать к примеру в том же репозитории и не только удобно, а нужно, так как IO
А еще скот показывает как классно функции в функции передавать, и передает функцию получения юзера (string -> User), но это ж не честный пример, а (string -> Async<Result<User>>) особо не поинджектишь
точно поинжектишь, видел такое, никому не советую
источник

ДБ

Дмитрий Башинский... in F# Chat
Вот вот
источник

ДБ

Дмитрий Башинский... in F# Chat
В итоге все начинает быть AsyncResult просто потому что ему заинджектили такую лябду
источник