Size: a a a

Scala User Group

2020 August 02

ΛВ

Λнтон Войцишевский... in Scala User Group
Sergey Alaev
Ладно, задрали. Если есть конструктивная критика - пишите.
Я написал выше
источник

𝛈µ

𝛈 µ in Scala User Group
Если её нет - не могли бы вы не лезть
источник

KC

Kain Crow in Scala User Group
Куда мне до монад.
источник

λ

λoλdog in Scala User Group
Sergey Alaev
Антон, где ваша статья про монады? Если её нет, но не могли бы вы не лезть с суконным рылом, пожалуйста.
Не оч конструктивное принятие критики. Он может критиковать и без статей
источник

KC

Kain Crow in Scala User Group
Но вообще очевидно если статья не учитывает одного из важнейших пунктов в определении - она вредная.
источник

KC

Kain Crow in Scala User Group
Она дает неполное определение под видом полного.
источник

SA

Sergey Alaev in Scala User Group
Λнтон Войцишевский

В частности, за интерфейсом функтора может прятаться функция с произвольным числом аргументов, и не обязательно чистая функция

Даже в том смысле, как я это расшифровал, это неправильно. Функтор предполагает, что в map будут передавать весьма конкретную чистую функцию с одним аргументом
Да, я имел в виду не функцию, которая передается в map, а реализацию функтора - код, который вычисляет его значение. Причем этот текст находится задолго до введения метода map, так что статья, похоже, не для вас
источник

SA

Sergey Alaev in Scala User Group
λoλdog
Не оч конструктивное принятие критики. Он может критиковать и без статей
Да, давать советы как писать статьи он может и не пиша статьи, это точно.
источник

λ

λoλdog in Scala User Group
Почему бы нет? Он же советует про монады, а не про стиль изложения
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Sergey Alaev
Давай сюда критику. Пёсье "никак не относится к функторам и монадам" конструктивной критикой не является

создать новый Functor<A> по существующему значению типа A.

Вы пишите о функторе, будто это интерфейс какой-то. Но очень важно то, что это все-таки класс типов, так что говорить о создании нового Functor<A> нельзя.
Есть ваш тип Foo<A> и отдельно от него есть инстанс Functor<Foo>.
В функторе тайп-параметр обязательно "с дыркой" и никак не говорит о том, какое А, В или С будет в каком-то конкретном Foo
источник

SA

Sergey Alaev in Scala User Group
λoλdog
Почему бы нет? Он же советует про монады, а не про стиль изложения
Эм, ты перечитай его коммент, на который ты ответил.
источник

λ

λoλdog in Scala User Group
Не хочу
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
мы можем написать функцию (f: Functor<A>) -> Functor<B> и назвать её map:
...
fun <B> map(f: (A) -> B): Functor<B>


Вот это тоже беда.
map возвращает не функтор, а конкретное В. Иначе бы вы ничего не смогли дальше сделать с этим значениес после map
источник

SA

Sergey Alaev in Scala User Group
Λнтон Войцишевский

создать новый Functor<A> по существующему значению типа A.

Вы пишите о функторе, будто это интерфейс какой-то. Но очень важно то, что это все-таки класс типов, так что говорить о создании нового Functor<A> нельзя.
Есть ваш тип Foo<A> и отдельно от него есть инстанс Functor<Foo>.
В функторе тайп-параметр обязательно "с дыркой" и никак не говорит о том, какое А, В или С будет в каком-то конкретном Foo
Functor - это не тайпкласс, это именно функтор) Я не использую тайпклассы в статье, вообще.
источник

𝛈µ

𝛈 µ in Scala User Group
Sergey Alaev
Functor - это не тайпкласс, это именно функтор) Я не использую тайпклассы в статье, вообще.
А 42 - это функтор?
источник

SA

Sergey Alaev in Scala User Group
𝛈 µ
А 42 - это функтор?
Если мы про статью, то это константная функция, вычисляющая значение функтора. Я думал, что достаточно понятно - есть интерфейс Functor<A>, есть его реализации.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Sergey Alaev
Если мы про статью, то это константная функция, вычисляющая значение функтора. Я думал, что достаточно понятно - есть интерфейс Functor<A>, есть его реализации.
Но функтор не интерфейс.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Он бесполезен в таком понимании
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Ну сделал я foo.map(f), получил Functor<B>, что дальше мне делать?
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Ещё раз мап сделать -- все, что я могу
источник