Kirill
Там же на втором этаже вроде потолка нет на лестнице
Kirill
и можно быстро залетать на третий этаж в нужную часть с ящиком
Kirill
(или как раз на третьем нет, не помню точно)
Bonart
Bonart
Диёр
Ну ide'шка же прячет
Dr. Friedrich
И даже от обработки.
Крылатый
Shub
Shub
Shub
На го там пишется всякая мелочь, чаще всего для внутреннего использования. Но в этом аспекте там питона раз в 10 больше, чем го
Shub
Shub
Я думаю, если б «Красный Дракон» писался сегодня, то Вернон Ворхеес получил бы набор микросервисов на го, а не зеркало с удавкой
Bonart
Roman
кто-нить что-нить знает про darklang?
Doge
Hog
Ayrat
Проблемы в скала чате
Ayrat
сдаюсь опять
реально ли в дотти определить инстанс профунктора для любого бифунктора, у которого есть инстансы функтора и контрафуктора для соотв-х дырок?
type Cov = [F[_, _]] =>> [A] =>> [B] =>> F[A, B]
type Con = [F[_, _]] =>> [B] =>> [A] =>> F[A, B]
given ProfuctorFromCovariContra[A, B, F[_, _]] as Profunctor[F] given (covary: Functor[Cov[F][A]], contra: Contravariant[Con[F][B]]) {
def dimap[A, A2, B, B2](f: A2 => A)(g: B => B2)(p: F[A, B]): F[A2, B2] =
{
val x = contra.contramap(f)(p)
val xx = covary.fmap(g)(x)
xx
}
}
Ayrat
А вот и ответ, как же это сделать.
Ayrat
Можно въебать говна и написать для скалы 2
object mkProfunctor {
trait Forall[F[_]] {
def apply[A]: F[A]
}
object Forall {
private[Forall] object Private {
private[Forall] type T
}
type Hole1[C[_[_]], F[_, _]] = { type l[A] = C[F[?, A]] }
type Hole2[C[_[_]], F[_, _]] = { type l[A] = C[F[A, ?]] }
implicit def fromImplicitDefHole1[C[_[_]], F[_, _]](implicit lp: shapeless.LowPriority, c: C[F[?, Private.T]]): Forall[Hole1[C, F]#l] = {
new Forall[Hole1[C, F]#l] {
override def apply[A]: C[F[?, A]] = c.asInstanceOf[C[F[?, A]]]
}
}
implicit def fromImplicitDefHole2[C[_[_]], F[_, _]](implicit lp: shapeless.LowPriority, c: C[F[Private.T, ?]]): Forall[Hole2[C, F]#l] = {
new Forall[Hole2[C, F]#l] {
override def apply[A]: C[F[A, ?]] = c.asInstanceOf[C[F[A, ?]]]
}
}
}
type ForallHole1[C[_[_]], F[_, _]] = Forall[Hole1[C, F]#l]
def ForallHole1[C[_[_]], F[_, _]](implicit ev: Forall[Hole1[C, F]#l]): Forall[Hole1[C, F]#l] = ev
type ForallHole2[C[_[_]], F[_, _]] = Forall[Hole2[C, F]#l]
def ForallHole2[C[_[_]], F[_, _]](implicit ev: Forall[Hole2[C, F]#l]): Forall[Hole2[C, F]#l] = ev
implicit def fromFunctors[F[_, _]: ForallHole1[Contravariant, ?[_, _]]: ForallHole2[Functor, ?[_, _]]]: Profunctor[F] = new Profunctor[F] {
override def dimap[A, B, C, D](fab: F[A, B])(f: C => A)(g: B => D): F[C, D] = {
val contra: Contravariant[F[?, B]] = ForallHole1[Contravariant, F].apply[B]
val aftercontramap: F[C, B] = contra.contramap(fab)(f)
val functor: Functor[F[C, ?]] = ForallHole2[Functor, F].apply[C]
functor.map(aftercontramap)(g)
}
}
}
Ayrat
И знаете что самое смешное?
Ayrat
Это отрывок кровавого энтерпрайза :^)
Vasily
Ебанина какая-то
Vasily
В скале любят умные слова
Vasily
Типа профунктора
Ilya
О, это ж название канала с мемами, да?
Ayrat
Vasily
А на деле все же какое-то говно лепят
Vasily
В скале процент ебанутых выше, конечно
Ayrat
"Приходишь ты в фин тех, а там сидят два Васи и бубнят, профунктор бифунктора, бифунктор профунктора... Так и хочется леща им дать чтобы не писали больше профункторов."(c) Молдован
Hog
:))))
Hog
На половине книжки про котлин - реально выглядит как better java, а не вот это вот всё
Ayrat
Ага. И юнит есть. Но с генериками там общая беда
Hog
Edward
Vladislav
сдаюсь опять
реально ли в дотти определить инстанс профунктора для любого бифунктора, у которого есть инстансы функтора и контрафуктора для соотв-х дырок?
type Cov = [F[_, _]] =>> [A] =>> [B] =>> F[A, B]
type Con = [F[_, _]] =>> [B] =>> [A] =>> F[A, B]
given ProfuctorFromCovariContra[A, B, F[_, _]] as Profunctor[F] given (covary: Functor[Cov[F][A]], contra: Contravariant[Con[F][B]]) {
def dimap[A, A2, B, B2](f: A2 => A)(g: B => B2)(p: F[A, B]): F[A2, B2] =
{
val x = contra.contramap(f)(p)
val xx = covary.fmap(g)(x)
xx
}
}
Анна
Doge
Хочешь линзы - нужны профункторы.
Хочется что-нибудь типа пайплайнов и им подобных - опять таки появляются профункторы.
Doge
Причем ничего пугающего в них кроме названия - нет. Абсолютно элементарная штука
Dr. Friedrich
Doge
Ну и дальше код
Это уже чисто скаловские проблемы, хотя даже этот код не сильно сложный, хоть и смотрится устрашающе.
Dr. Friedrich
Ах, так это ещё не сильно сложный!
x
даже бинда можно испугаться, увидев имплементацию на сишарпах
Bonart
Ayrat
Ayrat
Лол. Чел выше работает в консалтинге.
Кстати контора в Дублине и нанимает фшарпистов!
Ayrat
Чел выше - это который из скала чатика с профункторами
Ayrat
То есть они такой код кому-то внедряют и убегают.
Vasily
В валмарте сидит?
Ayrat
Не. Просто в фирме, которая занимается софтвар консалтингом
Vasily
Сурово
Vasily
Вообще, конечно, дичь написана
Vasily
Впрочем, консалтинг дело такое
Ayrat
Сурово
Просишь ты их сделать что-то, денег платишь. А они тебе профункторы в код пихают и на себя подсаживают
Vasily
Надо постоянно обеспечивать себя работой
Ayrat
Им же выгоднее сделать дичь
Vasily
Ну и я вообще не понимаю бенефитов такого кода. На фшарпе я один раз написал, привел в понятный вид и оно работает и поддаётся рефакторингу не мной
Vasily
Здесь же без автора хер разберёшься
Ayrat
Это не скейлится.
Софт он не только в ДЦ должен горизонтально скейлится, но ещё и в плане суппорта.
То есть если я напишу 10 таких систем и мне на каждую надо команду суппорта (которые бай дефинишн не шарят в тайп левел магии, это дешёвая сила, которая освобождает дорогую силу писать что-то ещё) - это значит кто-то нахуевертил дичь
Ayrat
Такой код может быть оправданием только для джоб секьюрити или амачуров
Vasily
Тоже верно
Vasily
Ну и ещё служит средством возвышения себя в глазах быдла
Ayrat
И это тоже
Ayrat
я кстати заметил что начал впихивать где не надо англицизмы в русскую речь. Надо с этим бороться
Vasily
Ггггг
Vasily
То ли ещё будет
Bonart
Doge
Здесь же без автора хер разберёшься
Ну, это спорное утверждение. Мне там понятно, что и как хотел сказать автор.
Требуется просто какой-то бэкграунд в скале и её около ФП подходах.
Bonart