@kotlin_lang

Страница 625 из 982
Albert
09.04.2018
10:38:12
Ну и?
Ну и значит можно

Alexey
09.04.2018
10:38:17
Но в байткоде то она в классе
это уже не про язык, а про платформу

Quantum Harmonizer
09.04.2018
10:38:23
Это понятно. Но логически говоря - нельзя назвать функцию вне класса методом
хмм, а статический метод — это метод или функция? (спойлер: это процедура)

Руслан
09.04.2018
10:38:36
На SO обсосали ваш очень важный вопрос https://stackoverflow.com/questions/155609/difference-between-a-method-and-a-function

Google
Albert
09.04.2018
10:38:46
Вообще. Вы забыли про процедуры

Mikhail
09.04.2018
10:40:01
Кто-нибудь использовал? https://github.com/diklimchuk/Kotlin-js-di

James Tiberius Kirk ?
09.04.2018
10:40:06
ну ясное дело что это спор из программы специальной олимпиады

Michael
09.04.2018
10:40:57
поэтому ты счел нужным принять в нем участие?

Руслан
09.04.2018
10:45:06
У него там дока, все дела

Mikhail
09.04.2018
10:51:27
Igor
09.04.2018
11:29:36
А в котлине ведь нет альтеpнатив такому скаловскому коду: trait Functor[F[_]] { // some useless stuff } Или я не нашел пpосто?

То есть сделать F<_> не выйдет (пока что)?

Leonid
09.04.2018
11:34:01
Higher-Kinded types нет в котлине

Igor
09.04.2018
11:37:24
Обидно, спасибо.

Michael
09.04.2018
11:40:05
А для чего это тебе на практике нужно?

Google
Michael
09.04.2018
11:40:15
(например)

Alexey
09.04.2018
11:46:06
Тайп классы

Руслан
09.04.2018
11:47:11
Из Слака, от @relizarov (PM - паттерн матчинг) Еще один anecdotal piece of evidence. На JPoint подошла пара ребят с вопросом про PM. Я спросил: — а в каком коде он вам помогает? — Ну когда “глубоко надо матчить“. — А где надо глубоко матчить? — Ну вот если у нас есть `Future<Optional<Data>>

Vitalii
09.04.2018
11:48:17
В Either надо было ещё обернуть ?

Sergey
09.04.2018
12:42:30
опять с монадами и PM лезите в котлин

интересно в golang тоже в комьюнити требуют монады?

Alexey
09.04.2018
12:47:48
Вот пат мата на регулярках прям не хватает

с остальным можно жить

Sergey
09.04.2018
12:48:24
а можно конкретных кейсов когда паттерн матчинг нужен то?

Руслан
09.04.2018
12:48:43
> опять с монадами и PM лезите в котлин > а можно конкретных кейсов когда паттерн матчинг нужен то?

Alexey
09.04.2018
12:50:07
val regexp = Regexp("""(\d+) | (\d+)""") when(str) { regexp(firstGroup, secondGroup) -> ??? else -> println("shit happens") }

Quantum Harmonizer
09.04.2018
12:50:45
такие штуки на динамических языках удобно делать...

Alexey
09.04.2018
12:51:30
такие штуки в скалке активно пользуются

Берял
09.04.2018
12:53:45
опять с монадами и PM лезите в котлин
можно понять нежелание использовать монады: слово "страшное". а патмат то чем не угодил?

Quantum Harmonizer
09.04.2018
12:54:58
можно понять нежелание использовать монады: слово "страшное". а патмат то чем не угодил?
тем, что это большая языковая фича для очень редких случаев

Alexey
09.04.2018
12:55:21
Кто будет считать редкость?

Quantum Harmonizer
09.04.2018
12:55:34
Кто будет считать редкость?
Разработчики языка же.

Берял
09.04.2018
12:55:35
тем, что это большая языковая фича для очень редких случаев
а с какой целью тогда в котлине есть sealed классы?

фича более редкая на порядок

Google
Берял
09.04.2018
12:55:59
и без патмата менее полезная тоже на порядок

Quantum Harmonizer
09.04.2018
12:56:03
а с какой целью тогда в котлине есть sealed классы?
Это достаточно маленькая фича с точки зрения языка.

Alexey
09.04.2018
12:56:16
ну вот кстате да, ADT есть, а пат мата, чтобы его обходить - нет

Берял
09.04.2018
12:56:28
особенно когда зачатки патмата сделали в виде when, но не довели до конца

Igor
09.04.2018
12:57:31
ну вот кстате да, ADT есть, а пат мата, чтобы его обходить - нет
К слову, внезапно, паpодию на тайп-классы сделать то можно.

Даниил
09.04.2018
12:57:33
интересно в golang тоже в комьюнити требуют монады?
в голанг даже без дженериков как-то обходятся, какие там монады

Igor
09.04.2018
12:57:35
Сейчас скину пpуф.

Даниил
09.04.2018
12:57:48
ты про arrow?

Quantum Harmonizer
09.04.2018
12:58:26
особенно когда зачатки патмата сделали в виде when, но не довели до конца
when — это достаточно удобный гибрид switch и if. До того удобный, что можно было даже if не делать)

Alexey
09.04.2018
12:59:00
К слову, внезапно, паpодию на тайп-классы сделать то можно.
Да тайп классы то можно делать, для простых типов правда только без HKT, но вот удобно их пользовать - увы и ах

Igor
09.04.2018
12:59:20
https://gist.github.com/komigor/eebbf98ee72a77016ba9c2ef91a151ba

Берял
09.04.2018
12:59:31
Quantum Harmonizer
09.04.2018
12:59:56
вот этого я и не понимаю. этот when будто не доделан
ты ожидаешь от него паттерн-матчинга, а его там никто и не хотел делать)

Alexey
09.04.2018
13:00:31
Да в целом почти также выходит, идет импоpт extension функций
Ну ты не можешь просто сказать функции тип, и она такая хоба и подставила тайп класс, как в хашкеле или скалке

Igor
09.04.2018
13:00:41
Ну тут да. Увы.

Берял
09.04.2018
13:00:49
ты ожидаешь от него паттерн-матчинга, а его там никто и не хотел делать)
я ожидаю что языковые фичи будут по смыслу друг с другом связаны, есть sealed -> должен быть патмат, а так это две самостоятельных неудобных фичи

Igor
09.04.2018
13:01:01
Но вот сделать обеpтку над типом, чтобы потом extension функции к этой обеpтке имоpтились можно.

Google
Igor
09.04.2018
13:01:43
Особенно с java-интеpопом

Берял
09.04.2018
13:02:30
так зачем патмат с sealed, когда есть смарткасты?
потому что патмат более общая и универсальная фича, и, помимо прочего, он дает еще больше читаемости коду

Alexey
09.04.2018
13:03:34
Щас бы субъективщину за истину выставлять

Вот если бы было какое голосование, где сказали бы вот вам удобнее так или так

Берял
09.04.2018
13:04:16
чёт мне кажется, что всё наоборот)
наоборот что именно? читаемость или универсальность?

Quantum Harmonizer
09.04.2018
13:05:44
наоборот что именно? читаемость или универсальность?
Оба. Смарткасты универсальнее, when читаемые.

Берял
09.04.2018
13:06:28
Alexey
09.04.2018
13:09:31
Похоже на фанатичное следование какой то позиции

Типо, да нет тут никаких проблем

Это с вами что то не то

У пат мата есть свои проблемы, но и достоинства там тоже есть, причем зачастую перевешивающие эти проблемы

Quantum Harmonizer
09.04.2018
13:12:26
Похоже на фанатичное следование какой то позиции
Не похоже. Мне не всё в котлине нравится.

Sergey
09.04.2018
13:15:29
в котлине мне не нравится JVM)

и то что все вокруг блокирующее

Alexey
09.04.2018
13:17:57
Из блокирующего остался же только JDBC по сути

Quantum Harmonizer
09.04.2018
13:18:14
Google
Quantum Harmonizer
09.04.2018
13:18:22
а на андроиде — так вообще

Sergey
09.04.2018
13:18:51
Из блокирующего остался же только JDBC по сути
сам факт того что нужно учитывать всегда еще то что либа может быть блокирующей уже не радует

вот берешь ты какое-то SDK, типа AWS

и нужно проверять, не блокирующее ли оно

Руслан
09.04.2018
13:19:40
вот берешь ты какое-то SDK, типа AWS
AWS обещали сделать асинхронный API

Sergey
09.04.2018
13:20:44
вот например в го, им не нужно знать как компилируются их саспенденд функции, париться о блокировках и тд. у них если написано где-то "блокируюется" значит это просто саспендится. им не нужно париться о потоках, потому что там только одна модель канкаренси вот это все немного печалит, надеюсь kotlin/native в этом плане исправит огрехи JVM

Alexey
09.04.2018
13:21:04
Sergey
09.04.2018
13:21:23
aws sdk v2 не блокирует
это к примеру было, помимо aws sdk есть еще тонны других разных sdk)

Alexey
09.04.2018
13:21:46
Ну это же просто детские болезни

Sergey
09.04.2018
13:22:08
те же болезни у реактивных подходов, так что со временем все станет получше, надеюсь

Sergey
09.04.2018
13:22:55
в go lang какие-то файловые операции блокирующие
разве? из блокирующего там только unsafe вызовы сишного кода, на сколько я помню

Руслан
09.04.2018
13:25:11
Я не большой спец, но https://golang.org/pkg/io/#PipeWriter.Write

Sergey
09.04.2018
13:25:51
в go "blocking" постоянно называют саспендед, так что хз

Руслан
09.04.2018
13:27:43
Ну вот тогда еще в догонку обсуждение на SO https://stackoverflow.com/a/36117724/1538877

Sergey
09.04.2018
13:28:29
Ну вот тогда еще в догонку обсуждение на SO https://stackoverflow.com/a/36117724/1538877
понял, тогда да, там отдельный поток открывает и эмулирует "неблокирующее" поведение

Руслан
09.04.2018
13:28:34
они по сути сделали то что мы делаем в корутинах или Rx с блокирующим API: завернули в тред пул

Sergey
09.04.2018
13:28:38
в прочем как это на и на котлине явно делаем

угу

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