
Quantum Harmonizer
05.07.2018
10:41:05
по идее, это гетерогенный контейнер неименованных значений

Boris
05.07.2018
10:41:35

dimiii
05.07.2018
10:41:55

Quantum Harmonizer
05.07.2018
10:42:23
именованные значения у структур :)

Google

dimiii
05.07.2018
10:42:28
В смысле кортежи без операции проекции безсмысленны, а имена - это синтаксический сахар для такой операции

Anna
05.07.2018
10:43:18

Quantum Harmonizer
05.07.2018
10:43:43

dimiii
05.07.2018
10:44:02

Boris
05.07.2018
10:44:34
Много с ними проблем

dimiii
05.07.2018
10:44:45
Посмотрим, устоит ли Бреслав давлению дата-сцаентистов

Anna
05.07.2018
10:44:51
не совсем понятно, что это значит
чтобы в коде выглядело как кортеж, а внутри датакласс с полями field1, field2 типа того. Но это не имеет смысла без удобного доступа к элементам кортежа

Dimon
05.07.2018
10:45:53
чтобы в лямбде заголовок забивать? { (field1, field2, _, _, _, _, _) -> }

Quantum Harmonizer
05.07.2018
10:46:43

Anna
05.07.2018
10:47:27
Походу в Standard ML так сделано - там tuple это синтаксический сахар просто

Roman
05.07.2018
10:48:34

Anna
05.07.2018
10:50:46

Google

Boris
05.07.2018
10:52:23
Думаю если сделать фичу деструктуризации в параметры функции, то многие вопросы решатся


Andrey
05.07.2018
10:52:58
Отличное наблюдение !!!!!
Плохо себя ведет. Т/е сообщает об ошибке, но не о той, о которой следовало бы. Хотя трудности начинаются уже с arrayOf() - для пустого массива все равно нужно специфицировать тип, тогда можно считать, что, например, для arrayOf<String>() * должен вернуть пустой кортеж, что позволяет применять функции типа () -> T. Ну или ругнуться подходящим образом, если непозволительно. Вместо этого, невнятная ошибка, что - то вроде:
too many arguments for public final fun test(): Unit defined in Line_42
(), кстати, отождествляется с Unit во многих взрослых языках и является логической истиной https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_correspondence#General_formulation
В Котлине это не так, что тоже странно
Насколько мне известно, Unit только в некоторых математических системах считается истиной.
С точки зрения полиморфного лямбда исчисления (система F), тип Unit (единичный) и тип Boolean - разные типы и представыляются по разному https://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0_F#%D0%9F%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B8%D0%BF%D0%BE%D0%B2_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
В том же хаскел это разные типы.


Quantum Harmonizer
05.07.2018
10:53:03

dimiii
05.07.2018
10:53:14

Boris
05.07.2018
10:53:33

Quantum Harmonizer
05.07.2018
10:54:25

Boris
05.07.2018
10:55:18

Roman
05.07.2018
10:55:26
Так так и есть. Её домен это произведение типов. Так можно и нужно говорить.
А то что приозведение типов в котлине нельзя просто выразить (it is a non-denotable construct) так это by design, чтобы любители FP не писали нечитаемый говнокод. Тут уж извините.

dimiii
05.07.2018
10:57:36

Boris
05.07.2018
10:59:03
{ (a, b, c, _, _) ->
a(*b()) типа такого, если b возвращает деструктурируемое значение, чтобы параметры передавались в функцию a

Quantum Harmonizer
05.07.2018
11:03:25

Boris
05.07.2018
11:03:52
Норм выглядит

Quantum Harmonizer
05.07.2018
11:04:23
Чойта?
не знаю)
Вообще прикольно, но не уверен, что нужно

Boris
05.07.2018
11:05:46
Это конечно значительно полезнее если бы кортежи были в языке

dimiii
05.07.2018
11:06:56
Ведь это тоже кортежи )

Boris
05.07.2018
11:08:02

Google

dimiii
05.07.2018
11:08:36

Boris
05.07.2018
11:13:57
Вообще туплы не сложно сделать библиотекой, а вот такой сахар самому не сделать

Egor
05.07.2018
11:22:42

Boris
05.07.2018
11:23:44
Ну а как сделать удобнее даже если в язык поддержку добавить?
А конструктор можно сделать и покороче тип t(1, 2, 3)

Leonid
05.07.2018
11:30:20

dimiii
05.07.2018
11:31:49

Leonid
05.07.2018
11:32:59
Ну тогда получется, что домен foo() не Unit
Потому что тогда такой домен должен быть у foo(a: Unit)?

dimiii
05.07.2018
11:34:47
Собственно где-то здесь и причина моего бугурта

Andrey
05.07.2018
11:37:11
Оч весело писать Tuple(object1, object2, object3), а потом tuple.first, tuple.second и так далее
Ну можно сделать как-то так:
data class Tuple3<A, B, C>(val a: A, val b: B, val c: C)
fun <A, B, C> t(a: A, b: B, c: C) = Tuple3(a, b, c)
fun main(args: Array<String>) {
val tuple = t(1, "foo", 2.0)
val (a, b, c) = tuple
println(a)
println(b)
println(c)
}

Alexey
05.07.2018
12:03:06
Будут вполне себе вменяемые картежи

Alexander
05.07.2018
12:04:15
Коллеги, есть такой класс Klass<SELF extends Klass<SELF>>
Не понимаю как его я могу использовать в Котлине
Просто Klass() использовать не получается, просит дженерик. А какой я ему дженерик могу подпихнуть, когда ему особо ничего и не надо +_+
Вообще не совсе понимаю, как с такой структурой работать

Alexey
05.07.2018
12:05:36
Klass<_>?
вообще это делается для наследования зачастую, чтобы сохранить self.type

Mi
05.07.2018
12:06:05
Klass^_^

Alexander
05.07.2018
12:06:59

Quantum Harmonizer
05.07.2018
12:07:49
Klass<Nothing>

Alexander
05.07.2018
12:10:11
во, это помогло +_+
Но не понимаю почему. Ибо тут же мы не ссылаемся сами на себя, а наборот, указываем, что тут ничего не должно быть. Разве нет?

Google

Alexander
05.07.2018
12:10:26
по моей логике должна была сработать <*>

Vladimir
05.07.2018
12:10:47
Как насчёт Klass<Klass>?

Alexander
05.07.2018
12:14:14

Andrew
05.07.2018
12:14:34
Разве не обсуждали это недавно в этом чате?

Alexey
05.07.2018
12:15:19
лол, все fluet api идут лесом

Andrew
05.07.2018
12:15:26

Alexey
05.07.2018
12:18:24
не проходит
Если класс не финальный можно сделать
class FixSelfTypeKlass: Klass<FixSelfTypeClass>

Vladimir
05.07.2018
12:20:40
не проходит
А вообще нужно создавать инстанс этого класса?
Как тут уже писали, обычно такое делают, чтобы отнаследоваться от такого класса и ссылаться на тип наследника, а не использовать такой рекурсивный тип "как есть".

Alexander
05.07.2018
12:22:47

Kirill
05.07.2018
12:49:58
Привет, есть в котлине require с кастомным exception?

Quantum Harmonizer
05.07.2018
12:50:19

Kirill
05.07.2018
12:50:39
я хочу написать require уоторый будет кидать мой exception
который я задам

Quantum Harmonizer
05.07.2018
12:51:22

Kirill
05.07.2018
12:51:28
написать свою функцию, точно
что-то не догнал сразу)

Quantum Harmonizer
05.07.2018
12:51:37
напиши

Sergey
05.07.2018
14:02:44
0.8 kotlin native релизят, только что тегнули

Роман
05.07.2018
14:08:26
скинь changelog

Sergey
05.07.2018
14:20:31
его еще собирают)

Google

Sergey
05.07.2018
14:20:38
скоро анонс будет в блоге я так думаю

Alexander
05.07.2018
15:52:06

Sergey
05.07.2018
15:57:37
https://github.com/JetBrains/kotlin-native/blob/master/CHANGELOG.md#v08-jul-2018

Alexander
05.07.2018
16:03:20
What about new grald plug... тьфу, на автомате по-английски пишу. Что про новый градл плагин. Кто-нибудь тыкался Это по-моему было самое слабое место (не считая CLion)

Sergey
05.07.2018
16:03:54
с CLion все плохо?

Rikland
05.07.2018
16:06:48
В Kotlin коде
Только когда явно напишешь типа indexOf тогда он начинал работать.
Позитивно (:

Alexander
05.07.2018
16:09:19
Было плохо особенно со сборкой. Вроде говорят, что в 2018.2 полный грэдл

Sergey
05.07.2018
19:11:55
видимо стоит ожидать в новых релизах

1337
05.07.2018
19:37:14
вот бы реактор+котлин нейтив+ангуляр

Sergey
05.07.2018
19:37:35
что вы там курите?)

1337
05.07.2018
19:38:14
у реактора есть планы по на фронт через котлин нейтив

Sergey
05.07.2018
19:38:58
я думал это просто набор баззвордов хипстера)
зачем реактор если есть корутины?

Kirill
05.07.2018
19:39:23
Когда на котлин нэйтив можно будет норм приложухи под iOS писать?)