@kotlin_lang

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

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
именованные значения у структур :)
По идее можно сделать кортежи как синтаксический сахар над структурами/датаклассами

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

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

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

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 В том же хаскел это разные типы.

dimiii
05.07.2018
10:53:14
А в чем вопрос? Если транслировать в Haskell, например, то kotlinIsBetterJava1 :: forall T. (T) -> Unit. А "нормально" это как должно было быть сделано?
Нормально, т/е как в хаскелл. Ну и чтобы говоря о типе функции в котлин kotlinIsBetterJava2, можно было утверждать, что её домен - произведение типов TxS, и принимает на вход (t, s) а домен kotlinIsBetterJava - Unit, и принимает (). Это не придирки, просто хочется прозрачности. Котлин люблю.

Boris
05.07.2018
10:53:33
давно есть
Через *?

Quantum Harmonizer
05.07.2018
10:54:25
Через *?
{ (a, b, c, _, _) ->

Boris
05.07.2018
10:55:18
{ (a, b, c, _, _) ->
Нет, я совсем другое имел ввиду

Roman
05.07.2018
10:55:26
Так так и есть. Её домен это произведение типов. Так можно и нужно говорить.

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

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

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
Вообще туплы не сложно сделать библиотекой, а вот такой сахар самому не сделать
Оч весело писать Tuple(object1, object2, object3), а потом tuple.first, tuple.second и так далее

Boris
05.07.2018
11:23:44
Ну а как сделать удобнее даже если в язык поддержку добавить?

А конструктор можно сделать и покороче тип t(1, 2, 3)

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

dimiii
05.07.2018
11:34:47
Ну тогда получется, что домен foo() не Unit Потому что тогда такой домен должен быть у foo(a: Unit)?
Не могу уловить мысль, но у второй foo именно что Unit, у foo(a: Unit) домен тоже Unit ) - но это вопрос к синтаксису

Собственно где-то здесь и причина моего бугурта

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
Хотите, чтобы было как на Украине^W^W в скале?? :)
Ну вообще, давно собираются заменить текущую реализацию на хетерогенные листы, и прощай ограничение в 22

Будут вполне себе вменяемые картежи

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
Klass<_>?
Не, так не получается +_+

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
I said what I said. Java supports self-type generics, while kotlin doesn't
От прилинкованного сообщения и вниз.

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

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

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

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
скоро анонс будет в блоге я так думаю

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
с CLion все плохо?
У меня когда я последний раз пробовал не работал автокомплит. (:

В 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 писать?)

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