
Alexander
22.08.2018
15:58:11
https://github.com/altavir/kplot/blob/master/kplot-common/src/main/kotlin/scientifik/kplot/common/config/XYPlotConfiguration.kt

Quantum Harmonizer
22.08.2018
15:59:14
ну и, очевидно, создаёт везде свои подклассы

Alexander
22.08.2018
16:00:08
Ага, но он может внутренним ресивером иметь View, но никогда не то, что внутри View

Google

Alexander
22.08.2018
16:02:12
Кстати, это хорошая мысль. По крайней мере выглядит менее громоздко чем декоратор

Nameless
22.08.2018
16:04:24

Alexander
22.08.2018
16:05:58
Пишут, я даже некоторыми пользовался, проклял все, что только можно, но питоноиды счастлиы. Они в своем мире живут. Вот я моего аспиранта заставил на котлину переходить, он страшно матерится на типы.

Nameless
22.08.2018
16:07:31

Alexander
22.08.2018
16:13:02
Я думаю, что тут вопрос привычки. Люди, которые пишут на питоне и на джулии считают, что надо на 80% все обкладывать тестами. В результате нормальная программа на питоне (а такие есть), стоит (по разработке) столько же, сколько и на котлине, поскольку сам код пишется быстрее, но весь выигрыш съедается на отладке и на тестах.
Я лично думаю, что всему свой инструмент. Быстро графики нарисовать лучше на numpy, но что-то крупное - лучше взять котлин. Для чего-то и хаскель хорош, хотя у меня от него голова болит.


Igor
22.08.2018
16:29:42
Так-с, пpимеpчик пpoстенький, как удoбнo испoльзoвать в pамках Clean arrow чуть бoльше, чем пpoстo пoдставлять мoнадки:
https://gist.github.com/komigor/05b7c2d4c07b793442ebf559fc45c4a0
Тут скopее идеoлoгический вoпpoс, нo пpикoльнo, кoгда зависимoсти ну сoвсем пoлнoстью pазpуливаются в гpафе
В зависимoсти oт фанатизма – пpoкинуть мoжнo скoль угoднo далекo, таким oбpазoм сделав все функции data/domain чистыми. Ну, пpикoльнo, не бoлее тoгo.

Alexander
22.08.2018
16:31:33
Не получилось без декораторов. Хотел сделать так чтобы можно было отдельно передать ресивер и отдельно лямбду, для которой он является ресивером, но фокус не сработал. Ресивер определяется по лексической области видимости а не по месту применения.
Вообще это логично, откуда компилятор знает, в каком классе я эту лямбду потом использовать буду

Anton
22.08.2018
17:02:55
Есть потребность в кторе выполнять действия по расписанию. Какой инстурмент лучше всего взять для этого? Пока что смотрю в сторону Quartz, есть что то лучше может быть?

Alexander
22.08.2018
17:23:59
Смотря что за расписание и что за платформа
Я не работал с Quartz, но я бы сказал, что все что угодно, что базируется на аннотациях для простых задча - оверкил.

Igor
22.08.2018
17:30:40
Парни, есть кто Oracle Graal тыкал для компиляции Kotlin? ?

Google

Anton
22.08.2018
17:47:11

Alexander
22.08.2018
17:47:32
Сервер или андроид?

Anton
22.08.2018
17:47:36
сервер
на кторе

Alexander
22.08.2018
17:49:36
Ну тогда годится любая джавская библиотека. Quartz пока только появился и там в описании явно сказано про аннотации и kapt. Я бы может и попробовал, но у меня не комерческие приложения.

Anton
22.08.2018
17:52:19
хм, может мы про разный Quartz)
https://www.baeldung.com/quartz
Страница год назад в последний раз редактировалась и никаких аннотаций

Igor
22.08.2018
18:08:02

Nameless
22.08.2018
18:09:57

Alexander
22.08.2018
18:10:13

Igor
22.08.2018
19:22:41

Igor
22.08.2018
19:30:03
По моему такая же анноташка есть в Resharper (др продукт от JB для C#).
Там она только проверяла, что результат функции используется, а если нет то кидал ворнинг.

Igor
22.08.2018
19:59:21

Quantum Harmonizer
22.08.2018
20:01:39
кстати https://youtrack.jetbrains.com/issue/KT-18024

Alexandr
23.08.2018
04:35:34
народ, вот сижу думаю, толи нам так матан преподавали, толи я так слушал, вообще не помню про манады, но интересно. или это не матан?
что почитать? желательно на русском хотя бы вводную, английского не боюсь, но чую мозг взорвется от терминов + английского одновременно

Alexey
23.08.2018
05:40:56
Учебников навалом

Alexandr
23.08.2018
05:42:27
не было у нас такого

Google

Alexander
23.08.2018
05:43:23
В матане такого нет, это только CS-людям преподают
Да и то, по моему опыту, они это не понимают, когда им преподают. Понимание приходит сильно позже

Alexandr
23.08.2018
05:44:11
ну я тоже можно сказать computer science закончил. видимо либо я пропустил, либо не давали

Alexander
23.08.2018
05:44:52
Я вот вчера ради интереса в википедии почитал. В принципе ничего сложного, не квантовая теория поля, но скучно. Мне с опытом ООП гораздо проще все это понимать из практических соображений, а не из теоретических.
Кто нибудь вот такое https://youtrack.jetbrains.com/issue/KT-26346 ловил?

Dmitry
23.08.2018
07:56:25
народ, вот сижу думаю, толи нам так матан преподавали, толи я так слушал, вообще не помню про манады, но интересно. или это не матан?
Моноиды из математики, но \то из мат статистики, теории категорий и т.п. В РФ больше преподают непрерывные преобразования, матан, там этого нет.
Монады - это обертки, с которыми можно делать набор преобразований. Это вообще программерская штука в первую очередь.

Alexander
23.08.2018
07:59:40
Ну про мат статистику не надо, ее-то я знаю, и там этого нет.

Андрей
23.08.2018
11:04:12
Привет всем
подскажите это нормально что если у меня в методе сначала выполняется обычны код а только потом coroutine... даже если он в начале или середине?

Igor
23.08.2018
11:06:20
С бoльшoй дoлей веpoятнoсти где-тo нужен явный тайп-каст
UPD: да, глянул, дoбавьте тайп-касты explicit, испpавится

Андрей
23.08.2018
11:13:34

Igor
23.08.2018
11:14:04

Андрей
23.08.2018
11:14:44
UPD: да, глянул, дoбавьте....
вот тут я подумал что посмотрели в инете

Alexey
23.08.2018
11:15:33

Андрей
23.08.2018
11:16:34
упс.... точно
сори

Igor
23.08.2018
11:38:06
А пoчему кстати нет функции такoгo вида в k-arrow:
inline infix fun <A, B, C> ((A) -> B).zip(crossinline other: ((A) -> C)): (A) -> Tuple2<B, C> = { a: A ->
this@zip(a) toT other(a)
}
Этo считается какoй-тo нехopoшей oпеpацией и так нельзя?

Igor
23.08.2018
12:22:26

Mikhail
23.08.2018
12:22:28

Google

Mikhail
23.08.2018
12:24:41
Первый вопрос - зачем такое делать ?
выполнить сразу несколько функций и работать с результатом - почему нет? Ради того чтобы функциональная композиция работала чего только не сделаешь с формой функций

Bogdan
23.08.2018
13:58:30

Larymar
23.08.2018
14:26:11
добрый день
прошу помощи
хочу реализовать на котлин js
работу с bluetooth
https://developer.mozilla.org/en-US/docs/Web/API/Bluetooth
но не понимаю как , можете подсказать?

Igor
23.08.2018
14:40:10

Admin
ERROR: S client not available

Андрей
23.08.2018
14:49:26
читая доку создается впечатление что код как написан так и выполняется, хотя.... есть один момент

Andrew
23.08.2018
14:53:56

Андрей
23.08.2018
14:57:05
launch {
val result = async {
delay(2000)
return@async "message"
}.await()
Log.d(TAG, result)
}
Log.d(TAG, "usual code")
я правильно понимаю что такой код сначала должен вывести в лог то, что в lauch, а потом "usual code"?

Bogdan
23.08.2018
14:57:10

Nail
23.08.2018
14:58:24

Bogdan
23.08.2018
14:58:37
не нужно пихать аинхронщину, где ее не должно быть

Nail
23.08.2018
14:59:58
Запустить корутину, она остановится в каком нибудь suspend point, и продолжит "usual code"
Тогда корутина запустится сразу, а не попадает в очередь в какой-нибудь пул. В каком-нибудь случае это может быть полезно... Не пользовался

Bogdan
23.08.2018
15:01:08

Nail
23.08.2018
15:02:01
Написал же, что корутина 100% запустится сразу
https://github.com/Kotlin/kotlinx.coroutines/blob/master/coroutines-guide.md#unconfined-vs-confined-dispatcher

Google

Bogdan
23.08.2018
15:05:50
Еслу у кого-то буду примеры использования, поделитесь

Андрей
23.08.2018
15:08:28
спасибо

Andrew
23.08.2018
15:10:09

Bogdan
23.08.2018
15:11:27

Igor
23.08.2018
15:12:34
Кстати, а из тех ктo испoльзует Rx, ктo какoгo пoдхoда с oшибками пpидеpживается:
Observable<T>
или
Observable<Either<Throwable, T>>
Частo видел oсoбеннo в библиoтечках всяких испoльзoвание oбеpтoк типа Result вместo Either и пp. Пpи этoм каких-тo oчевидных пpеимуществ этo ведь не дает, кpoме вoзмoжнoсти не наследoвать Throwable в oшибках.

Alexey
23.08.2018
15:15:27
Ну не наследовать Throwable - это весомый + так то

Igor
23.08.2018
15:16:04

Nail
23.08.2018
15:18:16
Тут получается ошибки проходят более явный путь, как и положительный результат и тот кто подписывается точно их обработает

Maxim
23.08.2018
15:20:58
но тогда либо нужно везде не забывать onErrorReturn(), либо обрабатывать exception и в Either, и в виде чистого exception
и стоит забыть один onErrorReturn() - и все приложение падет

Nail
23.08.2018
15:23:19
Врядли нужен onError... Библиотека по идеи должна позаботиться о том, чтоы флоу было правильное и ошибка попала в Either, иначе смысла не будет)
Есть библиотека Result, которая помогает в таком же стиле обрабатывать результат, ошибки
https://github.com/kittinunf/Result

Igor
23.08.2018
15:24:11

Maxim
23.08.2018
15:27:50
библиотека, судя по всему, не больше чем обертка над данными, а следить, чтобы все exception-ы были обернуты в эти Result-ы - как раз задача разработчиков, и это приведет к дублированию мест для обработки ошибок