Руслан
26.10.2018
11:51:08
Если по предмету спора, то рантайм поддержка сопрограмм в JVM (fiber) нужна всем языкам, которые компилируются в JVM байт код.
Точно так же, как нужна поддержка в JVM оптимизации хвостовых вызовов.
Без этого, как первое, так и второе реализуется в Kotlin хитрой генерацией байт кода, которая при этом не для всех случаев сможет нормально работать.
Для хвостовых вызовов не работает при взаимной рекурсии, для сопрограмм не вникал, но думаю тоже будут всякие особые случаи, когда не получится на генерации байт кода обойти ограничения JVM.
В JVM нету и обычной оптимизации хвостовой рекурсии, а надеятся что тут за одно вместе с другой, совсем не релевантной фичей завезут я бы не стал. Да и необходимость этой фичи приувеличена.
Vsevolod
26.10.2018
11:54:55
>а надеятся что тут за одно вместе с другой, совсем не релевантной фичей завезут я бы не стал
обещали завезти, без TCE все слишком медленно
Alexandr
26.10.2018
11:54:59
Quantum Harmonizer
26.10.2018
11:55:46
Google
Andrey
26.10.2018
11:56:14
Руслан
26.10.2018
11:57:56
Vsevolod
26.10.2018
11:58:08
tail call elimination
Руслан
26.10.2018
11:58:55
И это будет работать только в файберах или везде? Новое ключевое слово или JIT?
Vsevolod
26.10.2018
11:59:49
как надизайнят. Но везде JIT’ом вряд ли будет
Руслан
26.10.2018
12:00:06
На jvmls они вроде просто сказали что хотят, но завести не обещали
Vsevolod
26.10.2018
12:00:54
так со всеми фичами :) Хотят, если это в дизайн впишется
Alexander
26.10.2018
12:01:08
Vsevolod
26.10.2018
12:01:23
но там сейчас полно других проблем, как я понимаю не до хвостовой рекурсии
Alexey
26.10.2018
12:02:04
Quantum Harmonizer
26.10.2018
12:02:33
Alexander
26.10.2018
12:04:24
Andrey
26.10.2018
12:05:47
Google
Alexander
26.10.2018
12:06:16
туда же эта, как ее... карирование
Andrey
26.10.2018
12:06:18
Alexander
26.10.2018
12:08:28
За явное карирование в котлине тоже был клич. Просто ради красоты слова.
Andrey
26.10.2018
12:09:31
Alexander
26.10.2018
12:11:45
за аналог того, что есть в груви и наверное скале http://mrhaki.blogspot.com/2009/09/groovy-goodness-add-some-curry-for.html
Посмотрел, что там в скале, ууужааас. Котлиновские функциональные типы такие красивые по сравнению.
Anna
26.10.2018
12:13:08
Alexander
26.10.2018
12:14:53
Явно, значит специальная функция в стдлибе, а еле лучше какое-нибудь ключевое слово (не знаю,как его воткнуть, но наверное можно придумать).
Andrey
26.10.2018
12:15:20
Anna
26.10.2018
12:16:07
Alexander
26.10.2018
12:16:26
В котлине или груве, или даже яве карирование тоже смысла особого не имеет. Ну единственное что в Java 8 лямбды дорогие.
Pavel
26.10.2018
12:16:31
Alexander
26.10.2018
12:16:36
ага
Andrey
26.10.2018
12:18:37
Просто сокращённая нотация написания лямбда абстракций
Alexey
26.10.2018
12:19:44
Alexander
26.10.2018
12:20:43
def modN(n: Int)(x: Int) = ((x % n) == 0) серьезно?
Alexey
26.10.2018
12:21:25
А шо не так то?
dimiii
26.10.2018
12:21:45
могли бы подсахарить, типа
def modN n: Int, x: Int -каррированный вариант
def modN(n: Int, x: Int) - кортеж
Google
Alexander
26.10.2018
12:21:49
Вопрос вкуса конечно, но мне сильно галаза режет. И как у такого явный тип исать?
Anna
26.10.2018
12:23:19
Alexey
26.10.2018
12:23:57
def modN(n: Int)(x: Int): Boolean = (x % n) == 0 ~= val modN: Int => Int => Boolean = n => x => (x % n) == 0 == val modN = (n: Int) => (x: Int) => (x % n) == 0
Pavel
26.10.2018
12:24:20
Почему мы пишем на котлине, когда есть скала?
dimiii
26.10.2018
12:24:22
Pavel
26.10.2018
12:24:43
Почему JB не свапнулись на скалу, а написали свое
И нас еще за собой притащили
Alexey
26.10.2018
12:24:52
Andrey
26.10.2018
12:26:17
Alexander
26.10.2018
12:27:00
Это я понимаю, как его в скале задавать?
Andrey
26.10.2018
12:27:24
Alexey
26.10.2018
12:27:32
а просто метод с несколькими группами параметров
Alexander
26.10.2018
12:28:50
Второй более или менее нормальный
Igor
26.10.2018
12:29:35
Alexander
26.10.2018
12:31:15
Я думаю, что в конце концов это вопрос бэкграунда. Я вот сколько лет пишу на Java, Groovy и Kotlin, ни разу не было желания что-то такое делать. У людей с ML или хаскеля наверное от наших чисто объектных решений мурашки бегают.
Alexey
26.10.2018
12:31:46
Andrey
26.10.2018
12:31:52
Кстати, а какой тип будет у вот такого в скале?
def modN(n: Int)(x: Int): Boolean = ((x % n) == 0)
val mod2 = modN(2)
Google
Alexey
26.10.2018
12:32:22
dimiii
26.10.2018
12:32:23
Alexander
26.10.2018
12:33:05
Я одно исключение знаю, правда я его в последнее время немного на котлину подсадил :)
Andrey
26.10.2018
12:37:07
Alexander
26.10.2018
12:38:47
Карировать, трамплинить, и прочее
Vladimir
26.10.2018
12:39:03
Alexander
26.10.2018
12:39:39
А вы давно кого-то видели, кто пишет на С? Чистом, без плюсов?
Andrey
26.10.2018
12:39:59
Vladimir
26.10.2018
12:40:29
Alexander
26.10.2018
12:41:24
Vladimir
26.10.2018
12:44:22
Anna
26.10.2018
12:45:23
Alexander
26.10.2018
12:45:23
А, ну тогда хорошо подойдет псевдоязык для управления роботм на клечатой доске.
Vladimir
26.10.2018
12:46:21
Anna
26.10.2018
12:46:29
Alexander
26.10.2018
12:47:16
Andrey
26.10.2018
12:52:13
Steve
26.10.2018
20:08:38
А когда Kotlin.JS будет в релизе?
Google
Денис
26.10.2018
20:10:37
А он часом не уже?
Руслан
26.10.2018
20:10:42
В 1.2 будет. Назад в будущее
Lev
26.10.2018
20:10:45
Он вроде уже?
Steve
26.10.2018
20:14:07
А корутины уже есть?
Lev
26.10.2018
20:14:23
Да
Я тут либку форкнул
https://github.com/Lewik/klogging
И использовал jitpack
Либа из трех частей js jvm common
Но при исползовании как зависимость в проекте - получается ошибка:
jvm часть зачем то лезет к
https://jitpack.io/com/github/lewik/klogging.common/1.2.71/klogging.common-1.2.71.pom
А должна к
https://jitpack.io/com/github/lewik/klogging/klogging.common/1.2.71/klogging.common-1.2.71.pom
То есть она пропускает один klogging. И я никак не могу понять где ошибка
Заметил что в jvm pom
https://jitpack.io/com/github/lewik/klogging/klogging.jvm/1.2.71/klogging.jvm-1.2.71.pom
есть депенденси на
<groupId>com.github.lewik</groupId>
А надо наверно с
<groupId>com.github.lewik.klogging</groupId>
Руслан
26.10.2018
20:20:44
А корутины уже есть?
В JS работают. kotlinx.coroutines есть для JS. Пока Корутины в эксперементальном статусе, но буквально вот-вот будет релиз 1.3 где они имеют стабильный статус. Т.е. можно брать 1.3-rc и начинать проект
Steve
26.10.2018
20:27:21
Да я в JetBrains много работал с корутинами, но хочется стабильности (
Жабра
26.10.2018
20:43:05
Steve
26.10.2018
20:44:14
Были баги раньше и было бы очень сложно без стабильной версии.
Жабра
26.10.2018
20:45:26
Алексей
27.10.2018
00:22:02
Какие минусы у корутин?
Dmitry
27.10.2018
02:17:12
Алексей
27.10.2018
02:28:41
Апи
Ну оно и не должно быть стабильным для экспериментальной версии:)
Dmitry
27.10.2018
02:45:28
Никто и не говорил, что должно