Size: a a a

Scala User Group

2020 August 02

ΛВ

Λнтон Войцишевский... in Scala User Group
Sergey Alaev
Вот это странный вопрос). У нас есть код, которому для работы достаточно map, он будет абстрактный и всё такое. А вызывающая сторона может знать больше об этом типе.
class Option<A> : Functor<A>{...}
val foo: Option<Int> = ...
val s: Functor<String>= foo.map(it.toString)
s.getOrElse("bar")//doesn't work, because s is not Option, it's functor

Вот вам пример, что мне тут делать? Кастовать?
источник

𝛈µ

𝛈 µ in Scala User Group
И не поспоришь
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
𝛈 µ
Разве котлин умеет в хкт?
Нет, не умеет, я решил показать на более понятном человеку языке боли синтаксисе
источник

𝛈µ

𝛈 µ in Scala User Group
fun <A> lift(value: A): Monad<A> = TODO() - а вот эта хуйня - это часть монады, или просто мимо проходила?
источник

SA

Sergey Alaev in Scala User Group
Λнтон Войцишевский
class Option<A> : Functor<A>{...}
val foo: Option<Int> = ...
val s: Functor<String>= foo.map(it.toString)
s.getOrElse("bar")//doesn't work, because s is not Option, it's functor

Вот вам пример, что мне тут делать? Кастовать?
Статья же про монады, а не про котов, arrow-kt и эквилибристику на котлине. Поэтому да, в указанном формате оно для практики непригодно.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Sergey Alaev
Как раз нет, это не так. Правильный вариант - как в статье. Представь себе IO, который имплементит этот интерфейс. сигнатура же совпадет? за вычетом косяка, что map вернет Functor, а не IO
Нельзя исключать этот ваш косяк, это черт возьми самое важное тут
источник

𝛈µ

𝛈 µ in Scala User Group
Λнтон Войцишевский
Нет, не умеет, я решил показать на более понятном человеку языке боли синтаксисе
Я вот сам уже не помню, но джава вроде умела чо-то типа F<?> ?
источник

SA

Sergey Alaev in Scala User Group
^^^ чуть выше ответил
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
И кроме того, сигнатура не совпадет у интерфейса, у вашего один тайп-параметр
источник

𝛈µ

𝛈 µ in Scala User Group
И даже F<?<?>>
источник

𝛈µ

𝛈 µ in Scala User Group
Или мне кажется
источник

SA

Sergey Alaev in Scala User Group
Λнтон Войцишевский
И кроме того, сигнатура не совпадет у интерфейса, у вашего один тайп-параметр
У IO тоже.
источник

𝛈µ

𝛈 µ in Scala User Group
Sergey Alaev
У IO тоже.
fun <A> lift(value: A): Monad<A> = TODO() - а вот эта хуйня - это часть монады, или просто мимо проходила?
источник

SA

Sergey Alaev in Scala User Group
𝛈 µ
fun <A> lift(value: A): Monad<A> = TODO() - а вот эта хуйня - это часть монады, или просто мимо проходила?
Ты же знаешь, что да, зачем глупые вопросы задаешь?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Sergey Alaev
У IO тоже.
Что у ИО тоже? Я говорю про ваш интерфейс функтора, в нем один тайп-параметр без дырки.
источник

𝛈µ

𝛈 µ in Scala User Group
Sergey Alaev
Ты же знаешь, что да, зачем глупые вопросы задаешь?
А почему она не в интерфейсе, а просто рядом лежит?
источник

𝛈µ

𝛈 µ in Scala User Group
>> или асинхронным: java.util.concurrent.CompletableFuture<A>
источник

SA

Sergey Alaev in Scala User Group
𝛈 µ
А почему она не в интерфейсе, а просто рядом лежит?
Чтобы не усложнять
источник

𝛈µ

𝛈 µ in Scala User Group
Хороший пример монады
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
https://stackoverflow.com/questions/1709897/why-there-is-no-something-like-imonadt-in-upcoming-net-4-0

Сергей, почитайте вот тут ответ на вопрос. Поймёте, почему не выйдет на интерфейсах без ХКТ сделать функтор и монаду
источник