@kotlin_lang

Страница 820 из 982
Sergey
22.08.2018
11:29:41
Di7aK
22.08.2018
11:29:53
утечка

Никита?❄️
22.08.2018
11:29:56
Возможно что-то течёт
Возможно, не спорю

Di7aK
22.08.2018
11:30:47
Оперативка нынче дорогая)
скажи это видяхам

Google
Sergey
22.08.2018
11:30:58
Оперативка нынче дорогая)
Это точно. Заказал себе 32гб, просто жесть цена

Никита?❄️
22.08.2018
11:31:03
скажи это видяхам
Они подешевели)

Di7aK
22.08.2018
11:31:13
гтх650 3к я епанусь

Quantum Harmonizer
22.08.2018
11:31:22
скажи это видяхам
они для работы не нужны

Di7aK
22.08.2018
11:31:59
чтобы не отвлекаться на игры стал на интегрированной сидеть

интересно еще то что эмулятор без дров не лагает

Alexey
22.08.2018
11:56:19
А что это и как это? Можно пояснения для тех, кто на норм функциональных языках не писал?)
Ну типа when(a) { is String if a.isEmpty => ..// empty string handling is String => ..// non empty handling else => some other case }

if a.isEmpty - guard

Quantum Harmonizer
22.08.2018
11:56:59
ну, is String && isEmpty жи

Alexey
22.08.2018
11:57:17
Ну это я какой то банальный кейс привёл

Так чтобы обозначить что такое гарды

Igor
22.08.2018
12:50:34
Мoжет ктo-тo пpивести pеальный кейс, где пoлезнo наличие arrow.optics.Iso<S, A> для кoнкpетных типoв и этo сoкpащает кoд? с arrow.optics.Lens<S, A> вoпpoсoв нет, случаи испoльзoвания для меня oчевидны. А вoт пpизмы и изoмopфизм не мoгу пoнять

Quantum Harmonizer
22.08.2018
12:52:37
Может кто-то привести реальный случай, где полезен arrow?

Google
Igor
22.08.2018
12:53:07
Или в целoм, на весь?

Alexey
22.08.2018
12:53:27
Ну iso же вроде как нужен, чтобы доказать, что если ты можешь какие то законы применить к S, то ты их можешь применить и к A Типо вот у тебя есть Order<Int> и есть data Shit(val i: Int) Имея Iso<Int, Shit> ты можешь предоставить Order<Shit>

Ну и наоборот

Alexey
22.08.2018
12:55:37
?

Igor
22.08.2018
12:56:45
Может кто-то привести реальный случай, где полезен arrow?
У меня в целoм кoд стал oпpятнее, пoдсoкpатился заметнo, нo пoка чтo без oсoбoгo фанатизма – pанoватo втягивать все мoдули :)

Alexey
22.08.2018
12:56:50
Может кто-то привести реальный случай, где полезен arrow?
Когда ты пишешь библиотеки разных сортов, тебе нужны абстрации, и вот всякие arrow позволяют говорить что твои абстрации подчинаются каким то законам

Quantum Harmonizer
22.08.2018
12:57:17
Без сарказма. Я видел только те части arrow, которые дичь — вероятно, упустил нормальные.

Alexey
22.08.2018
12:57:44
Ты вместо сабтайпингов предоставляешь инстансы тайп классов для своих типов

Bogdan
22.08.2018
12:58:00
Так 4 гига свободных есть
Винде частая проблема это диск, может у тебя идея в подкачке уже

Mikhail
22.08.2018
12:58:11
круто, я б с интересом посмотрел
+1 хотел бы посмотреть на продакшн-реди код на arrow

Alexey
22.08.2018
12:59:13
слабо понимаю, что это значит)
Ща попробую что то более внятное накатать)

Mikhail
22.08.2018
13:01:01
У меня в целoм кoд стал oпpятнее, пoдсoкpатился заметнo, нo пoка чтo без oсoбoгo фанатизма – pанoватo втягивать все мoдули :)
кстати, а с arrow в каком стиле пишешь? mtl? или пока просто оптика + парочка монад?

Igor
22.08.2018
13:01:31
+1 хотел бы посмотреть на продакшн-реди код на arrow
Если дoйдут pуки – скину пoстpoение гpафа зависимoстей на Readerах.

кстати, а с arrow в каком стиле пишешь? mtl? или пока просто оптика + парочка монад?
Пoка втopoе, там пpoект и так на VIPER + Redux, не хoчу сильнo услoжнять.

Google
Alexey
22.08.2018
13:17:29
слабо понимаю, что это значит)
Ну вот смотри, классический пример, твоей библиотеке нужно чтобы в функцию foo приходил список значений такого типа, по которому ты можешь посортировать и вот так будут выглядеть два подхода: // вот это подход с сабтайпингом fun <A: Comparable<A> foo(list: List<A>): A = ??? // а вот так это было бы сделано через type class // Comparator - какой никакой, а с натяжкой тайп класс fun <A> foo(list: List<A>, comparator: Comparator<A>): A = ??? В чем преимущество тайп классов перед сабтайпингом - ты можешь сделать интсанс даже для класса, который нельзя расширить. В более функиональных языках есть имплиситные параметры и например в той же scala компилятор мог бы за тебя подставить Comparator, ну а в котлине приходится ручками

Alexey
22.08.2018
13:21:39
Ну так и есть, type class - это класс, который описывает некоторый закон (или поведения) для типа, отсюда и названия *класс типов* В данном случае Comparator - это класс сравнимых типов

Alexey
22.08.2018
13:23:00
Ну да

Просто их использование сложновато

Alexey
22.08.2018
13:23:47
Ну в джава как и в scala нет честных type class'ов, так как должна быть гарантия, что для типа определена строго одна реализация

Quantum Harmonizer
22.08.2018
13:24:04
Alexey
22.08.2018
13:24:06
Comparable - это OOP сабтайпинг

Quantum Harmonizer
22.08.2018
13:24:39
comparable заставляет класс поддержать определённый шаблон поведения, comparator — реализовать это поведение сбоку, даже для финального типа

Nameless
22.08.2018
13:24:59
Comparator - это интерфейс который сравнивает хотя мб вы как то сильно глубже меня находитесь в понимании

Nameless
22.08.2018
13:25:23
> В данном случае Comparator - это класс сравнимых типов но это как то странно звучит

какой this? кот

Quantum Harmonizer
22.08.2018
13:26:04
какой this? кот
я затупил

Nameless
22.08.2018
13:26:08


ну слава богу, а то я думал что я головой поехал

Nameless
22.08.2018
13:26:43


Google
Alexey
22.08.2018
13:26:57
Так стопе я же написал код с объяснениями выше

Alexey
22.08.2018
13:30:19
агонь, не зря писал)

Дак вот, в arrow по сути есть куча типов, которые описывают те или иные законы Ну и монадки с какой никакой do нотацией

К сожалению, так как в котлин нет HKT не получается абстрагировать код для монад

Nameless
22.08.2018
13:32:38
во всех этих штуках конечно привлекает что не возьмут на твое место джуниора с ходу работать

Alexey
22.08.2018
13:34:40
У нас джуны с горем попалам за недельку другую осваиваются

Mikhail
22.08.2018
13:35:13
Admin
ERROR: S client not available

Alexey
22.08.2018
13:35:37
ну почему ж нет. Их же можно эмулировать
Ну выглядит жестко конечно это очень

Mikhail
22.08.2018
13:36:16
во всех этих штуках конечно привлекает что не возьмут на твое место джуниора с ходу работать
почему же. Не думаю что монадки всякие сильно сложнее паттернов из GoF и разбора всяких AbstractBeanFactoryBuilderManager

Nameless
22.08.2018
13:36:31
У нас джуны с горем попалам за недельку другую осваиваются
ну а писали бы на plain java осваивался бы за пол дня, кому это надо

Mikhail
22.08.2018
13:36:34
они хотя бы все имеют один контракт

Alexey
22.08.2018
13:37:13
ну а писали бы на plain java осваивался бы за пол дня, кому это надо
Стоит оговорится что мы пишем на скалке, и нам это очень сокращает код

Mikhail
22.08.2018
13:37:18
Ага, и примеров на java нет

Alexey
22.08.2018
13:40:49
почему же. Не думаю что монадки всякие сильно сложнее паттернов из GoF и разбора всяких AbstractBeanFactoryBuilderManager
Там законы вообще тупенькие по сути, и если в универе давали теоркат, то наверное ваще изи

Google
Kirill
22.08.2018
13:41:36
> и если в универе давали теоркат то после универа ты уже не джун ))

Quantum Harmonizer
22.08.2018
13:41:57
...а трейни)

Mikhail
22.08.2018
13:42:11
> в универе давали теоркат lul

на самом деле, там те же законы что и в моноидах

Никита?❄️
22.08.2018
13:43:13
Винде частая проблема это диск, может у тебя идея в подкачке уже
Подкачка размечена на ссдшник, и не переносится с него

Konstantin
22.08.2018
13:43:20
блин интересно где ж вы все эти сакральные знания юзаете

Mikhail
22.08.2018
13:44:15
блин интересно где ж вы все эти сакральные знания юзаете
ты их и сам используешь. Просто запомнил много частых случаев и не вынес в общие правила

Alexey
22.08.2018
13:44:22
на самом деле, там те же законы что и в моноидах
моноид в категории эндофункторов ?

Mikhail
22.08.2018
13:44:58
1. return >=> f == f 2. f >=> return == f 3. (f >=> g) >=> h == f >=> (g >=> h) ну чем не моноид-то?

Igor
22.08.2018
13:45:05
Alexey
22.08.2018
13:45:25
осталось стрелочки заменить на flatMap и return на конструктор, чтобы все понимали

блин интересно где ж вы все эти сакральные знания юзаете
ты просто юзаешь всякие типы с map flatMap и даже не задумываешься какие законы под этим всем лежат

Руслан
22.08.2018
13:48:17
А потом https://github.com/mesosphere/marathon/commit/fbf7f29468bda2ec29b7fbf80b6864f46a825b7a

Alexey
22.08.2018
13:48:21
Konstantin
22.08.2018
13:48:46
ну т.е. очевидно что есть большой такой пласт самоучек которые далеки от этих ваших страшных слов или даже впервые слышат, однако это не мешает им делать свою работу. она получается у них хуже, медленнее, или неэффективнее чем у тех кто обладает теорией?

Alexey
22.08.2018
13:49:04
Вот как начнёшь писать свою библиотеку может задумаешься о всех этих законах

Konstantin
22.08.2018
13:50:07
настолько сильно задумываться, чтобы потом никто не смог разобраться как это работает

Alexey
22.08.2018
13:50:28
?

як всё сложно

Страница 820 из 982