@kotlin_lang

Страница 948 из 982
Mikhail
15.10.2018
09:07:36
я вот навскидку могу назвать только одно погодное приложение под андроид, vscode, еще парочку текстовых редакторов, realworld project

Bogdan
15.10.2018
09:07:47
Вам там вроде накидали кода оО
HelloWord, и то что это читается лучше - чистая субъективщина, уже не раз выясняли

Mikhail
15.10.2018
09:09:06
я бы поглядел

Google
Mikhail
15.10.2018
09:09:10
накинь

Alexey
15.10.2018
09:09:54
https://gist.github.com/eld0727/79714d2d79a21785ddf02b7c7e63648d

Подставьте сюда реальную сессию и ваш любимый jOOQ и вперёд

Alexandr
15.10.2018
09:10:30
да того же мелкософта

тогоже jooq или querydsl

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

Mikhail
15.10.2018
09:13:24
кажется, мы договаривались не переходить на личности

Alexandr
15.10.2018
09:14:35
да вроде никто и не переходит)

Mikhail
15.10.2018
09:15:39
зайдите в аккаунты jetbrains/jboss/hibernate/spring/oracle/jee/drools
погоди, я имел в виду продуктовые проекты для конечных пользователей, а не большие фреймворки, бд или прочие продукты для тырпрайз разработчиков

и которые не являются просто семплами технологий

Alexandr
15.10.2018
09:16:41
окей) т.е. фреймворки монадами не пишутся?)

т.е. подход - не торт?)

Google
Alexey
15.10.2018
09:17:02
Mikhail
15.10.2018
09:17:07
я такого не говорил

Alexey
15.10.2018
09:17:13
Просто люди еще не готовы

Mikhail
15.10.2018
09:17:46
фреймворки пишутся, для скалы, хаскелл и прочего ФП, где монады достаточно давно уже есть много больших фреймворков

Alexandr
15.10.2018
09:17:49
если подход отличный - где фреймворки? народ будет использовать. ФП же не вчера рожден? :)

Mikhail
15.10.2018
09:18:14
для того чтобы такие появились на, допустим, котлин, нужно время

на джаве такого не будет

Mikhail
15.10.2018
09:18:39
там хоть все это можно делать, но блевать тянет от такой лапши, которая на джава выходит

Alexandr
15.10.2018
09:20:03
там хоть все это можно делать, но блевать тянет от такой лапши, которая на джава выходит
ну не используй, а в интернете плеваться тем что не нравится - не надо

Bogdan
15.10.2018
09:20:21
Опять эти "войны" "остроконечников" и "тупоконечников"

Mikhail
15.10.2018
09:20:57
Опять эти "войны" "остроконечников" и "тупоконечников"
Да как будто бы в этом чатике по-другому бывает

Alexandr
15.10.2018
09:21:44
Опять эти "войны" "остроконечников" и "тупоконечников"
просто не надо плеватьяс на другие подходы и продвигать свое) тогда священных вой не будет)

Руслан
15.10.2018
09:21:54
https://gist.github.com/eld0727/79714d2d79a21785ddf02b7c7e63648d
Не могу найти доку на KleisliMtlContext

Bogdan
15.10.2018
09:22:16
Коо там говорил что чат "ламповый" ?

Alexey
15.10.2018
09:22:33
Google
Mikhail
15.10.2018
09:22:56
в этом конкретном треде

Alexandr
15.10.2018
09:23:09
Это почему же не надо продвигать своё?
при этом не стоит обсерать остальное, как это происходит часто)

Mikhail
15.10.2018
09:23:35
пруфы?

Quantum Harmonizer
15.10.2018
09:23:39
Marat
15.10.2018
09:23:41
при этом не стоит обсерать остальное, как это происходит часто)
обсирать не плохо, плохо когда не видишь нормальную аргументацию)

Руслан
15.10.2018
09:23:57
я тоже не нашёл
Я пытаюсь понять как оно соотносит вызов session в многопоточной среде с текущей сессии, и какие там накладные раскходы возникают. Потому что сейчас выглядит как магия

Andrey
15.10.2018
09:24:03
Монады не слишком удобны без monad comprehension (do нотация) и monad transformers. И то, и другое в Java/Kotlin не поддерживается. При этом, если monad comprehension в Kotlin можно эмулировать, так как в самом языке есть нотация последовательного исполнения инструкций, то monad transformers без higher order kinds я как-то себе не представляю. BTW, без higher order kinds сам интерфейс функтора и монады не объявишь в общем виде.

Marat
15.10.2018
09:24:44
ну так и аргументации нет
ну тогда можно и обсирать)

Andrey
15.10.2018
09:25:19
Однако в arrow есть трансформеры
В Arrow эмулируются higher order kinds через конвенции, что тоже несколько криво.

Alexandr
15.10.2018
09:25:19
ну тогда можно и обсирать)
ну вот и просто обсирают, без приведения аргументов)

Alexandr
15.10.2018
09:25:52
Однако в arrow есть трансформеры
но это же не language feature

Andrey
15.10.2018
09:26:54
но это же не language feature
Ну трансформеры нигде и не являются фичей языка. Они везде библиотекой идут.

Руслан
15.10.2018
09:26:58
Там просто берётся ссылка на session и пихается в каждую функцию одна и таже
Т.е. в условном контроллере куда прилетает http запрос я должен вот так писать program.fix().run(DbSession())?

Marat
15.10.2018
09:27:02
ну вот и просто обсирают, без приведения аргументов)
можно не обращать внимания, пусть кричат)

Mikhail
15.10.2018
09:27:11
но это же не language feature
ну так и корутины не language feature по большому счету

Google
Alexey
15.10.2018
09:27:15
Можно синтаксисом обвешать и спрятать пару вызовов

Alexandr
15.10.2018
09:27:48
Руслан
15.10.2018
09:28:00
типо того
Тогда стало совсем непонятно как вся эта магия понимает какую сессию подставить

Alexandr
15.10.2018
09:28:02
зато прекращается быстро)

Mikhail
15.10.2018
09:28:30
false
думаю, если бы можно было через конвенции их сделать, то сдлеали бы

Quantum Harmonizer
15.10.2018
09:29:07
думаю, если бы можно было через конвенции их сделать, то сдлеали бы
там в @jvmchat есть хейтер, который считает, что корутины нужно было делать библиотекой :)

Alexandr
15.10.2018
09:29:20
ну так и корутины не language feature по большому счету
core - language feature, то что идет либой - официально преподносится как одна из реализаций, основанная на базисе из ядра. в шарпе тоже только коровые вещи в ядре

jb говорят что ты можешь взять и сам запилить свои корутины

Admin
ERROR: S client not available

Mikhail
15.10.2018
09:29:45
там в @jvmchat есть хейтер, который считает, что корутины нужно было делать библиотекой :)
а как он сделает саспенды библиотекой? через декораторы а-ля ркс?

Bogdan
15.10.2018
09:30:08
там в @jvmchat есть хейтер, который считает, что корутины нужно было делать библиотекой :)
это Истиный хейтер котлина ии скалист по совместительству ?

Quantum Harmonizer
15.10.2018
09:30:12
Alexey
15.10.2018
09:30:13
Тогда стало совсем непонятно как вся эта магия понимает какую сессию подставить
Kleisli - это по сути просто функция из A -> B, над некоторым F, F - Deferred, то есть у нас получается что мы стакаем кучу функций A -> Deferred<B>, и в месте вызова подставляем этот A

Quantum Harmonizer
15.10.2018
09:30:39
а как он сделает саспенды библиотекой? через декораторы а-ля ркс?
типа, надо было аннотейшен процессингом делать

Mikhail
15.10.2018
09:30:45
жуть

Alexandr
15.10.2018
09:30:53
Не сами корутины. А библиотеку для них.
да, поверх стандартной базы свои мега крутые

Quantum Harmonizer
15.10.2018
09:31:23
это Истиный хейтер котлина ии скалист по совместительству ?
да) Ну а Котлин, конечно же, плох тем, что он не Скала)

Google
Alexandr
15.10.2018
09:31:33
типа, надо было аннотейшен процессингом делать
ну suspend это можно сказать и есть аннотация на методе

единственное - компилятор ничего гаратнтировать при этом не сможет

Mikhail
15.10.2018
09:32:22
я слушал подкастик и там гофер ругал корутины потому что они не горутины и нет мало спец слов в языке для них

Bogdan
15.10.2018
09:33:27
Bogdan
15.10.2018
09:33:47
ну одно ключевое слово вместо двух, это неплохой результат

Bogdan
15.10.2018
09:34:10
учитывая что suspend не так часто используется, как await

Руслан
15.10.2018
09:35:06
Kleisli - это по сути просто функция из A -> B, над некоторым F, F - Deferred, то есть у нас получается что мы стакаем кучу функций A -> Deferred<B>, и в месте вызова подставляем этот A
Все равно магия, можешь слегка аджастнуть код, чтобы было чуть понятнее. Например у нас есть сервер, и реализовать один хендлер который возьмет userId и использует его потом для того чтобы в базу писать: class Request(val userId: Int) class Response { fun send(data: String) = println(data) } typealias RequestHandler = (Request, Response) -> Unit

Alexander
15.10.2018
09:45:37
Привет всем, я ноль в котлине не ругайтесь)) сталкнулся с вот такой проблемой



Alexander
15.10.2018
09:46:43
на ABAPе)

Quantum Harmonizer
15.10.2018
09:47:29
на ABAPе)
Ну суть в том, что код должен находиться в методе, а там он лежит прям в теле класса.

Alexander
15.10.2018
09:47:53
рука лицо)) спасибо))

Руслан
15.10.2018
09:58:02
Ну скорее должно быть что то вроде такого: https://gist.github.com/eld0727/58509105f4b77fe7bbc43cd00038c482
Сессия как-то магически снаружи забиндилась, я хочу вот этот userId в неё положить

Alexey
15.10.2018
09:59:51
Сессия как-то магически снаружи забиндилась, я хочу вот этот userId в неё положить
Ну ты userId отдал хендлеру, он там у SessionProvider дёрнул session и выполнил запрос

И это всё не запустится до тех пор пока ты не сделаешь fix().run(session).await()

Руслан
15.10.2018
10:01:22
ThreadLocal используется для того чтобы вот этот userId доставать например на уровне запросов в базу, и не прокидывать его явно

Какой-то сессионный объект

Alexey
15.10.2018
10:01:53
Ааааа, ты хотел еще сунуть userId в контекст?

Руслан
15.10.2018
10:02:04
Ну конечно, это же самое интересное

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