@kotlin_lang

Страница 981 из 982
Vsevolod
26.10.2018
11:54:55
>а надеятся что тут за одно вместе с другой, совсем не релевантной фичей завезут я бы не стал обещали завезти, без TCE все слишком медленно

Google
Andrey
26.10.2018
11:56:14
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
Что такое трамплин и где почитать про него?
http://mrhaki.blogspot.com/2011/04/groovy-goodness-recursion-with-closure.html Специально пример груви, чтобы все поняли, что этим никто не пользуется.

Vsevolod
26.10.2018
12:01:23
но там сейчас полно других проблем, как я понимаю не до хвостовой рекурсии

Quantum Harmonizer
26.10.2018
12:02:33
http://mrhaki.blogspot.com/2011/04/groovy-goodness-recursion-with-closure.html Специально пример груви, чтобы все поняли, что этим никто не пользуется.
Тьфу. Способ снова решать итеративные задачи, завёрнутые в рекурсию, итеративно?

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
Явное это как? Точнее не так. Оно бывает неявным? Точнее не так. Не понял, короче, ничего. Поясните, за что конкретно был клич.
Я бы под неявным поняла каррирование как в ML, которое в синтаксический сахар припрятано ? но кажется тут что-то другое, тоже непонятно

Alexander
26.10.2018
12:14:53
Явно, значит специальная функция в стдлибе, а еле лучше какое-нибудь ключевое слово (не знаю,как его воткнуть, но наверное можно придумать).

Andrey
26.10.2018
12:15:20
Я бы под неявным поняла каррирование как в ML, которое в синтаксический сахар припрятано ? но кажется тут что-то другое, тоже непонятно
За ML не скажу, а в Haskell нет никакого неявного кариирования. Там тупо все функции каррированные.

Anna
26.10.2018
12:16:07
За ML не скажу, а в Haskell нет никакого неявного кариирования. Там тупо все функции каррированные.
Ну в ML тоже, просто оно само, не надо цепочку вложенных лямбд городить

Alexander
26.10.2018
12:16:26
В котлине или груве, или даже яве карирование тоже смысла особого не имеет. Ну единственное что в Java 8 лямбды дорогие.

Alexander
26.10.2018
12:16:36
ага

Andrey
26.10.2018
12:18:37
Ну в ML тоже, просто оно само, не надо цепочку вложенных лямбд городить
Ну это просто синтаксический сахар, который прямо из лямбда исчисления пришёл. A sequence of abstractions is contracted: λx.λy.λz.N is abbreviated as λxyz.N

Просто сокращённая нотация написания лямбда абстракций

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
могли бы подсахарить, типа def modN n: Int, x: Int -каррированный вариант def modN(n: Int, x: Int) - кортеж
а там скобки у кортежа обязательны? если нет, то непонятно, как отличать

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 не свапнулись на скалу, а написали свое

И нас еще за собой притащили

Andrey
26.10.2018
12:26:17
Вопрос вкуса конечно, но мне сильно галаза режет. И как у такого явный тип исать?
Вы имеете ввиду, какой тип у каррированой лямбды, соответствующей этому modN? (Int) -> (Int) -> Boolean, если в Kotlin

Alexander
26.10.2018
12:27:00
Это я понимаю, как его в скале задавать?

Andrey
26.10.2018
12:27:24
Это я понимаю, как его в скале задавать?
В скале - хз, я её почти не знаю

Alexey
26.10.2018
12:27:32
def modN(n: Int)(x: Int) = ((x % n) == 0) серьезно?
Ну и это не функциональный тип

а просто метод с несколькими группами параметров

Alexander
26.10.2018
12:28:50
Второй более или менее нормальный

Igor
26.10.2018
12:29:35
def modN(n: Int)(x: Int) = ((x % n) == 0) серьезно?
А зато оверхеда нет (там же компилятор оптимизирует (вроде))

Alexander
26.10.2018
12:31:15
Я думаю, что в конце концов это вопрос бэкграунда. Я вот сколько лет пишу на Java, Groovy и Kotlin, ни разу не было желания что-то такое делать. У людей с ML или хаскеля наверное от наших чисто объектных решений мурашки бегают.

Alexey
26.10.2018
12:31:46
А зато оверхеда нет (там же компилятор оптимизирует (вроде))
Он это превратит в обычную метод с двумя параметрами в представлении jvm

Andrey
26.10.2018
12:31:52
Кстати, а какой тип будет у вот такого в скале? def modN(n: Int)(x: Int): Boolean = ((x % n) == 0) val mod2 = modN(2)

Google
dimiii
26.10.2018
12:32:23
Я думаю, что в конце концов это вопрос бэкграунда. Я вот сколько лет пишу на Java, Groovy и Kotlin, ни разу не было желания что-то такое делать. У людей с ML или хаскеля наверное от наших чисто объектных решений мурашки бегают.
Известный факт - все известные рускоязычные хаскеллисты пишут на java. Ну за редким исключением. Последние 7 лет, конечно это уже не правда, но как шутка, пойдет.

Alexander
26.10.2018
12:33:05
Я одно исключение знаю, правда я его в последнее время немного на котлину подсадил :)

Andrey
26.10.2018
12:37:07
Известный факт - все известные рускоязычные хаскеллисты пишут на java. Ну за редким исключением. Последние 7 лет, конечно это уже не правда, но как шутка, пойдет.
Известный факт: так уж получилось, что Java стала lingua franca для программистов. Естественно, большинство программистов, в том числе и хаскеллисты, умеют писать на Java. В общем не понял, что такого удивительного в этом факте.

Alexander
26.10.2018
12:38:47
Карировать, трамплинить, и прочее

Alexander
26.10.2018
12:39:39
А вы давно кого-то видели, кто пишет на С? Чистом, без плюсов?

Andrey
26.10.2018
12:39:59
С каких пор? Разве не C является таким?
Нет, притом уже давно. C - просто один из самых популярных ЯП и самый популярный кросс-платформенный ассемблер.

Vladimir
26.10.2018
12:40:29
А вы давно кого-то видели, кто пишет на С? Чистом, без плюсов?
Так дело не в том, чтобы на нём что-то делать, а в том, что это известный и достаточно простой язык, программу на котором поймёт кто угодно

Alexander
26.10.2018
12:41:24
Так дело не в том, чтобы на нём что-то делать, а в том, что это известный и достаточно простой язык, программу на котором поймёт кто угодно
Ну последнее утверждение - это неправда. Хоть немного сложную программу на С прочитать практически невозможно. Как только начинаются ссылки на функции, читаемость падает практически в ноль.

Anna
26.10.2018
12:45:23
А вы давно кого-то видели, кто пишет на С? Чистом, без плюсов?
У нас полконторы пишут на C ?‍♀️ А лингва франка в моём мире почему-то Питон ?

Alexander
26.10.2018
12:45:23
А, ну тогда хорошо подойдет псевдоязык для управления роботм на клечатой доске.

У нас полконторы пишут на C ?‍♀️ А лингва франка в моём мире почему-то Питон ?
На С - это значит у вас что-то системное пишут или микроконтроллеры программируют. А питон, да. К сожалению.

Alexander
26.10.2018
12:47:16
ну да, у нас прошивки пишут. Увы, пока это до сих пор C
Уже не совсем. Насколько я знаю, уже есть что-то на LLVM. Не для всего, что угодно, но появляется.

Andrey
26.10.2018
12:52:13
Так дело не в том, чтобы на нём что-то делать, а в том, что это известный и достаточно простой язык, программу на котором поймёт кто угодно
В C нет понятия объектов и лямбда выражний. При этом большинство современных программистов рассуждают либо в терминах объектов (ООП), либо в терминах лямбда выражений (ФП) В C нет понятия дженерик типов (параметрический полиморфизм). При этом, опять же, очень много современного кода основано на них. Итого: C не годится на роль lingua franca, на нём крайне сложно рассуждать о любых высокоуровневых концепциях.

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
Были баги раньше и было бы очень сложно без стабильной версии.
Ну лично я всего 1 раз встретился с багом в корутинах и то быстро сам переделал и норм. А у тебя что было?

Алексей
27.10.2018
00:22:02
Какие минусы у корутин?

Алексей
27.10.2018
02:28:41
Апи
Ну оно и не должно быть стабильным для экспериментальной версии:)

Dmitry
27.10.2018
02:45:28
Никто и не говорил, что должно

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