
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

Никита?❄️
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
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>
Ну и наоборот

Igor
22.08.2018
12:55:02

Alexey
22.08.2018
12:55:37
?

Igor
22.08.2018
12:56:45

Alexey
22.08.2018
12:56:50

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

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

Bogdan
22.08.2018
12:58:00

Quantum Harmonizer
22.08.2018
12:58:00

Mikhail
22.08.2018
12:58:11

Alexey
22.08.2018
12:59:13

Bogdan
22.08.2018
13:00:00

Mikhail
22.08.2018
13:01:01

Igor
22.08.2018
13:01:31

Nameless
22.08.2018
13:16:16

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, ну а в котлине приходится ручками

Quantum Harmonizer
22.08.2018
13:18:19


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

Quantum Harmonizer
22.08.2018
13:22:54

Alexey
22.08.2018
13:23:00
Ну да
Просто их использование сложновато

Nameless
22.08.2018
13:23:45

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

Nameless
22.08.2018
13:26:08
ну слава богу, а то я думал что я головой поехал

Alexey
22.08.2018
13:26:15

Quantum Harmonizer
22.08.2018
13:26:31

Nameless
22.08.2018
13:26:43

Google

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

Nameless
22.08.2018
13:29:31

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

Kirill
22.08.2018
13:35:15

Alexey
22.08.2018
13:35:37

Mikhail
22.08.2018
13:36:16

Nameless
22.08.2018
13:36:31

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

Alexey
22.08.2018
13:36:43

Quantum Harmonizer
22.08.2018
13:37:08

Alexey
22.08.2018
13:37:13

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

Alexey
22.08.2018
13:40:49

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 на конструктор, чтобы все понимали

Konstantin
22.08.2018
13:47:59

Руслан
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
?
як всё сложно