Анна
Жгите :)
Nikolay
Вот смотри этот код
Nikolay
sendDocument возвращает SendDocumentReq sendPhoto возвращает SendPhotoReq Оба реализуют интерфейс IRequestBase<Message> Должны ли они возвращать интерфейс?
Hog
Какой тип второго параметра execute?
Nikolay
А
Hog
Контекст и ?
Nikolay
Анна
@Dolfik ты хочешь чтобы у тебя там типы сами красиво вывелись?
Hog
Вот это сенды и должны возвращать :)
Анна
Hog
Всех с днём знаний!
Nikolay
Вот это сенды и должны возвращать :)
Ну есть такое подозрение
Nikolay
И есть второе подозрение, интерфейсы это не функциональненько, из-за этого проблемы
Hog
Вечером вашим посмотрю - до чего додумались :)
Nikolay
Но я хз работает полиморфизм в фп
Hog
Это ж дотнет :)
Анна
Оно с выводом типов может плохо дружить
Анна
ещё там value restriction наш любимый мог всплыть
Nikolay
Тут либо интерфейс возвращать, либо кастить
Nikolay
Но опять же, сработает, если тип будет: IRequestBase<Message> а если у второго будет IRequestBase<User> то не прокатит
Nikolay
И это плохо
Nikolay
Так как мне по сути generic не важен
Анна
должен же subtyping работать
Nikolay
Хотя не, это же возвращаемый тип
Nikolay
Иначе не получится)
Hog
IRB<M> и IRB<U> никак между собой не связаны
Анна
IRB<M> и IRB<U> никак между собой не связаны
с вариантностью нельзя шаманить?
Nikolay
Мне нравится как в typescript сделано
Hog
Они ж не в иерархии
Анна
Они ж не в иерархии
Предка нельзя сделать им?
Hog
Можно
Hog
Тогда понятно, какой тип возвращать, да? :)
Nikolay
Где наши заядлые фшарписты?
Nikolay
@fvnever вызываю тебя
Dr. Friedrich
Хто тут!
Анна
Я себя чувствую покемоном
Nikolay
Nikolay
Посмотри)
Анна
именно этим!
Dr. Friedrich
sendDocument возвращает SendDocumentReq sendPhoto возвращает SendPhotoReq Оба реализуют интерфейс IRequestBase<Message> Должны ли они возвращать интерфейс?
Не должны. Всегда принимай максимально общий тип, а возвращай максимально конкретный!
Nikolay
А как пофиксить ту ситуацию, что на скрине?
Nikolay
Эту
Nikolay
Dr. Friedrich
Ну я понял, тебе ковариация функций нужна.
Nikolay
Ну я понял, тебе ковариация функций нужна.
Я таких слов не знаю, но кажется да :D
Dr. Friedrich
В сишорпе бы это заработало!
Nikolay
Может другой подход к полиморфизму здесь нужен?
Анна
Nikolay
Есть идея какую-нибудь функцию написать, которая кастить будет 🤔
gsomix
а в F# что ли нету?
Нет, не очень нужен.
Nikolay
Нет, не очень нужен.
А как жить с моим кейсом?
Анна
Нет, не очень нужен.
я тут поняла, что я упустила вообще из виду, как в F# с сабтайпингом. Дыра!
Анна
Не дыра, а не нужен
в голове у меня дыра :)
Nikolay
в голове у меня дыра :)
Голова нужна, дыра не нужна
Nikolay
В OCaml есть. :)
Перекатываюсь
Анна
В OCaml есть. :)
в OCaml и row полиморфизм есть
Nikolay
А в Reason тоже?
gsomix
в OCaml и row полиморфизм есть
И полиморфные варианты!
Анна
прям не язык, а каток: всех укатает!
Nikolay
@gsomix ты со мной не разговариваешь? :)
Анна
И полиморфные варианты!
моего мини-курса не хватит, чтобы всё это студентам рассказать. И головы моей дырявой не хватит 🙈
gsomix
@AnutaU Только вариантность в OCaml — настолько популярная фича, что я даже синтаксис не знаю. :)
Анна
надо идти ботанить опять, а некогда 😭
Анна
Крылатый
Анна
А как ник переводится?)
всё банально: это просто имя
Крылатый
А, ок) Корейский ведь?
Анна
А, ок) Корейский ведь?
да. Кстати, если запариться подбором иероглифов по написанию, то так будет читаться "спокойное-ленивое" 😂 Ну как один из вариантов
Крылатый
Лол, прикольно)