
Anton
24.10.2018
08:47:22
дал ридонли. каждый день промахивается чатом

Kirill
24.10.2018
08:47:54

Bogdan
24.10.2018
09:16:14

Quantum Harmonizer
24.10.2018
09:36:06
Буквально вчера с коллегой обсуждали такую фичу свифта и потенциальную полезность её в котлине.
Сошлись на том, что в котлине это сделано иначе, интерфейсами, и совать это ещё и на уровень языка не особо полезно, трудоёмко и несовместимо.

Google

Andrey
24.10.2018
09:38:16

Alexey
24.10.2018
09:39:03
Даже звучит как дичь


Andrey
24.10.2018
09:44:23
На иммитацию мутабельности при помощи do нотации в хашкеле ?
Ну do нотация не имитирует мутабельность.
Она вообще синтаксический сахар, чтобы цепочки операций >>= и >> при работе с монадами не писать явно, вот и всё.
Через монады в Haskell много чего выражается, но это никак не связано с мутабельностью.
Есть State монада, но она выражает последовательность состояний по сути, при этом каждое из состояний иммутабельно.
Есть IO монада, она позволяет описать, какой сайд эффект мы ожидаем от внешнего мира, но описание, опять же, иммутабельно.
Так что не совсем понял, что имеется ввиду под имитацией мутабельности. Может итерация по последовательности состояний, а может ещё что.
Ну разьве что http://hackage.haskell.org/package/base-4.12.0.0/docs/Data-IORef.html
Изменяемая переменная, которую можно пользовать в контексте IO монады.

Alexey
24.10.2018
09:48:05
Ну это отдельный костыль, как и mvar

Andrey
24.10.2018
09:48:44
Ну за пределами IO сайд эффектов в Хаскеле нет, несколько я помню.

Alexey
24.10.2018
09:49:52

Andrey
24.10.2018
10:01:35
Тогда наверное имелось ввиду использование do нотации в контексте IO монады.
Там действительно может показаться, что переменные меняются:
do
x <- getLine
putStrLn $ "x = " ++ x
x <- getLine
putStrLn $ "x = " ++ x
С точки зрения программиста кажется, что значение x поменялось, но на само деле, это просто аргументы разных лямбд.
После "рассахаривания" do нотации получается вот такой код:
getLine >>= (\x ->
putStrLn $ "x = " ++ x) >>
getLine >>= (\x ->
putStrLn $ "x = " ++ x)
По нему сразу видно, что это не значение у x поменялось, а это вообще разные x

Kirill
24.10.2018
10:23:24

Igor
24.10.2018
10:24:14
trace ?

Andrey
24.10.2018
10:24:54
unsafePerformIO
Ну да, есть бэк доры. Без этого бэк дора IO нельзя было бы исполнить в принципе, то есть main бы не работал и писать реальные программы было бы нельзя.

Google

Kirill
24.10.2018
10:25:17
нет
digest loop и 4 гб на вкладку - совсем не жирно

Alexandr
24.10.2018
10:25:49

Kirill
24.10.2018
10:26:20
enterprise
биллинг
и вся прозрачность исчезает с необходимостью думать о том должен ли тут быть 2way и сколько итераций дайджеста это сгенерит
так что лучше уж реакт

Mikhail
24.10.2018
10:29:33

Igor
24.10.2018
10:46:34

Andrey
24.10.2018
11:04:40

Alexandr
24.10.2018
11:05:48

Kirill
24.10.2018
11:06:44

Andrey
24.10.2018
11:06:46

Denis
24.10.2018
11:18:58
А в котлине возможно передать через intent коллекцию/массив кастомных моделей? Просто модель с помощью Parcelable сделать легко, а вот коллекцию/массив этмх объктов?

Quantum Harmonizer
24.10.2018
11:20:16

Igor
24.10.2018
11:20:18

Boris
24.10.2018
11:21:14

Quantum Harmonizer
24.10.2018
11:22:01
массивы-то мутабельные

Google

Quantum Harmonizer
24.10.2018
11:22:27
и строки считать мутабельными, там жи массив

Denis
24.10.2018
11:23:13

Igor
24.10.2018
11:23:24

Alexey
24.10.2018
11:23:40
in this case it's possible

Denis
24.10.2018
11:24:19

Igor
24.10.2018
11:24:38

Alexandr
24.10.2018
11:27:29

Quantum Harmonizer
24.10.2018
11:29:33

Denis
24.10.2018
11:30:30

Денис
24.10.2018
11:31:24
Или я что-то не уловил?

Quantum Harmonizer
24.10.2018
11:31:52
не пойму, к чему это

Alexandr
24.10.2018
11:32:40

Quantum Harmonizer
24.10.2018
11:33:26

Денис
24.10.2018
11:35:27
Есть реализации иммьютабл-коллекций - листов, которые внутри используют представление, подобное, скажем, эррэйлисту, имеют метод add, возвращающий новый экземпляр коллекции, в который копируется то же содержимое + добавляется новый элемент.
По производительности бьёт, да, но так делают, кажется, в гуаве, например.

Alexandr
24.10.2018
11:35:29
Есть реализации иммьютабл-коллекций - листов, которые внутри используют представление, подобное, скажем, эррэйлисту, имеют метод add, возвращающий новый экземпляр коллекции, в который копируется то же содержимое + добавляется новый элемент.
По производительности бьёт, да, но так делают, кажется, в гуаве, например.
так делают скалисты

Google

Денис
24.10.2018
11:36:09
И они тоже

Igor
24.10.2018
11:38:39

Денис
24.10.2018
11:38:44
На джокере автор cyclops-react рассказывал, что такое же по интерфейсу поведение он реализовывал как-то сложнее внутри (там что-то с менее "агрессивным" копированием и сложным хранением на основе каких-то деревьев), в итоге и чтение, и запись за O(log n), в отличие от

Igor
24.10.2018
11:39:07
Есть реализации иммьютабл-коллекций - листов, которые внутри используют представление, подобное, скажем, эррэйлисту, имеют метод add, возвращающий новый экземпляр коллекции, в который копируется то же содержимое + добавляется новый элемент.
По производительности бьёт, да, но так делают, кажется, в гуаве, например.
Такое и в котлине есть https://github.com/Kotlin/kotlinx.collections.immutable

Денис
24.10.2018
11:39:44
Ну да.

Alexandr
24.10.2018
11:50:02
Кстати, а ты знаешь способ, как промутировать строку без рефлешкена?
по мотивам: небольшая задачка на собеседование, что будет вывдено на консоль и почему:
public class StringTest {
@Test
public void test() {
String a = "abc";
String b = "abc";
try {
Field value = a.getClass().getDeclaredField("value");
value.setAccessible(true);
char[] val = (char[]) value.get(a);
val[1] = 'd';
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
System.out.println(b);
}
}

Igor
24.10.2018
11:50:38
На какой джаве?

Alexandr
24.10.2018
11:52:02
на 8-й

Igor
24.10.2018
11:52:11
Фи, какой старье

Alexandr
24.10.2018
11:52:22

Igor
24.10.2018
11:53:21

Alexandr
24.10.2018
11:53:36

Igor
24.10.2018
11:53:46
https://i.gyazo.com/2fdc766d2999f243d45ba2ea019cba49.png

Alexandr
24.10.2018
11:55:23
точняк
не обратил внимание что там byte

Boris
24.10.2018
11:55:48

Igor
24.10.2018
11:55:55

Google

Boris
24.10.2018
11:57:52
Обёртку инлайн класс сделать ?

Quantum Harmonizer
24.10.2018
11:59:31
Собственно, из-за этого «единственного» ограничения в джаве везде используется заshitное копирование.

Boris
24.10.2018
12:01:00
Если он спрятан за инлайн классом без методов мутации, то норм
Компилятор же проверяет. А джаве сам инлайн класс всё равно нельзя провайдить
Т.е. вполне можно было бы для узких мест сделать решения
Осталось только подумать, какой профит от такой иммутабельности ? помимо тредсейфности

Mikhail
24.10.2018
12:46:16

Igor
24.10.2018
12:47:10
А у Романа Елизарова был только один доклад на kotlincong2018? Мне просто казалось что два.

Руслан
24.10.2018
12:47:28

Igor
24.10.2018
12:47:50
А его получается не записывали?

Руслан
24.10.2018
12:50:22
Думаю да, обычно воркшопы не записывают

Mikhail
24.10.2018
12:52:15

Nameless
24.10.2018
12:55:53

Андрей
24.10.2018
12:56:14

Nameless
24.10.2018
12:57:38
xD
или лучше: “не вижу себя работающим в вашей команде”
мб после этого как раз и возьмут, типо адекватный чел, не повелся

Андрей
24.10.2018
12:58:30
а оставшийся 1% - это собесы, где про это можно спросить

Nameless
24.10.2018
12:58:49