
Руслан
29.12.2016
10:39:50
очевидно же

Dmitry
29.12.2016
10:40:06
все сахарок, если так
но не каждый байткод можно декомпилировать в яву

Руслан
29.12.2016
10:40:13
ну так вы так и говорите

Google

Берял
29.12.2016
10:40:42
под сахарком имеется ввиду, что на скале можно писать совсем по-другому, а на котлине ты пишешь на жаве с более удобным синтаксисом, его даже в вакансиях не упоминают, потому что та же джава

Oleksandr
29.12.2016
10:40:52
почти все ЯП одинаковы по возможностям в рантайме
но в компайлтайме -- нет

Валерий
29.12.2016
10:40:59
Котлин-то действительно сахар
Шикарный, но сахар

Oleksandr
29.12.2016
10:41:01
и это не сахар

Валерий
29.12.2016
10:41:28
Впрочем, плюсы тоже сахар для С с какой-то стороны

Мытко
29.12.2016
10:41:33
It's SAHAROK time

Dmitry
29.12.2016
10:41:56
ну вот из недавнего
foo[F[_], A, B](fa: F[A], flatMap: FlatMap[F], f: A => F[B]): F[B] = flatMap.flatMap(fa, f)
давай, @HeapyHop , вырази
а мы похохочем

Oleksandr
29.12.2016
10:42:42

Руслан
29.12.2016
10:43:10

Мытко
29.12.2016
10:44:01
А я понял что хочу систему владений из раста

Google

Руслан
29.12.2016
10:44:23

Oleksandr
29.12.2016
10:44:30

Мытко
29.12.2016
10:44:39
Так работа на джаве

Oleksandr
29.12.2016
10:44:49
хотя не так круто, как в расте, признаю

Мытко
29.12.2016
10:44:55
А так, писал бы на расте

guga
29.12.2016
10:45:40

Мытко
29.12.2016
10:45:44
Может попросить сделать это в жаба 11?

James Tiberius Kirk ?
29.12.2016
10:45:58
в жаба 12 слышал будет

Мытко
29.12.2016
10:46:05
Еее

guga
29.12.2016
10:46:12

Валерий
29.12.2016
10:46:52
Если жаба доживёт

Victor
29.12.2016
10:47:03
Давайте сделаем JRust

Nikita
29.12.2016
10:47:11
Just

Мытко
29.12.2016
10:48:01
Надо объединить ржавость и кофе
Какое же слово это описывает

Руслан
29.12.2016
10:48:16
раст не получится

Victor
29.12.2016
10:48:38
Как лихо сейчас обидели рубистов

Luger
29.12.2016
10:48:44
не надо портить раст яво-машиной

Руслан
29.12.2016
10:49:00
php, python, ruby, js

Google

Luger
29.12.2016
10:49:12

Мытко
29.12.2016
10:49:29
А как называется джава джаваскрипт?

Руслан
29.12.2016
10:49:36

guga
29.12.2016
10:50:32
насхорн
был ещё рино, правда не знаю где он сейчас

Руслан
29.12.2016
10:50:46
есть еще вроде, можешь выбрать

Мытко
29.12.2016
10:51:17

Руслан
29.12.2016
10:51:32
у них разный стартап тайм вроде
свою плюсы и минусы

Мытко
29.12.2016
10:52:00
Я лучше котлин поучу немножко
Или спринг с джавой
А то на хакатоне я выяснил, что нихуя не знаю

Andre
29.12.2016
10:53:38
хакатоны не нужны

Руслан
29.12.2016
10:54:25
а еще бывают хакатоны внутри проекта/компании
там еще веселее

Aleksey
29.12.2016
10:54:51
Паттернт-матчинг мошная штука. На пример на его основе можно в 5 строчек описать DSL для роутинга, который будет выглядеть примерно вот так:
val service: HttpService = {
case GET -> Root / "blog" / blogId / "article" / articleId =>
// do something with blogId and articleId
}
Блин по какому принципу в этом проклятом телеграме работает маркдаун? То он подсвчивает блок кода, то не подсвечивает.

Andre
29.12.2016
10:55:34
WHERE’S THE TRIGGER
WHERE’S THE TRIGGER

Мытко
29.12.2016
10:55:45

Google

Andre
29.12.2016
10:56:00
с мобилы после следующего апдейта заработает
на десктопе, маке и вебограме уже работает

Nikita
29.12.2016
10:56:16
fucking backticks!!!

Andre
29.12.2016
10:56:17
еще есть @bold
where’s the trigger

Admin
ERROR: S client not available

Мытко
29.12.2016
10:56:37
Зачем мне бот для болда

Руслан
29.12.2016
10:56:42

Мытко
29.12.2016
10:56:42
Костыли какие-то
Сделали бы уже все как в дискорде

Руслан
29.12.2016
10:57:16
100500 роутеров живут без этого)

Aleksey
29.12.2016
10:57:44

@Saint Just
29.12.2016
10:57:46

Nikita
29.12.2016
10:58:19

Aleksey
29.12.2016
10:59:01

Anton
29.12.2016
10:59:52

Aleksey
29.12.2016
10:59:52
При этом это реально удобно. Ты эти blogId и articleId получаешь в код, как значения. Они проверяются во время компиляции.

Dmitry
29.12.2016
11:00:05
ты скажи что это собрание символов делает, а дальше все выражается
foo[F[_], A, B](fa: F[A], flatMap: FlatMap[F], f: A => F[B]): F[B] = flatMap.flatMap(fa, f)ну смотри, у тебя есть какой-то конструктор типа F[_], например List или Future, и сами типы, например List[String] или там Future[Integer]),
и у тебя есть штука определенная для этого "множества типов", FlatMap[F], с функцией flatMap(fa: F[A], f: A => F[B])
в нашем случае пример flatMap(List[String], String => List[Integer]) или flatMap(Future[Integer], Integer => Future[User])
соответственно foo(f: Future[Integer], flatMap: FlatMap[Future], f: Integer => Future[User]) => Future[User]


Руслан
29.12.2016
11:00:38
foo[F[_], A, B](fa: F[A], flatMap: FlatMap[F], f: A => F[B]): F[B] = flatMap.flatMap(fa, f)ну смотри, у тебя есть какой-то конструктор типа F[_], например List или Future, и сами типы, например List[String] или там Future[Integer]),
и у тебя есть штука определенная для этого "множества типов", FlatMap[F], с функцией flatMap(fa: F[A], f: A => F[B])
в нашем случае пример flatMap(List[String], String => List[Integer]) или flatMap(Future[Integer], Integer => Future[User])
соответственно foo(f: Future[Integer], flatMap: FlatMap[Future], f: Integer => Future[User]) => Future[User]
Короче в джаве ты будешь писать под каждый тип функцию, и?

Dmitry
29.12.2016
11:00:52
ну ты обещал что выразить можно

Google

Руслан
29.12.2016
11:00:53
Сахар, просто уменьшил кол-во функций

Dmitry
29.12.2016
11:00:59
:)) ок.

Руслан
29.12.2016
11:01:07
можно вообще сделать рефлексией
и будет одна
сахар

Dmitry
29.12.2016
11:01:11
!

Руслан
29.12.2016
11:01:20
Это не моя логика, это ваша

Dmitry
29.12.2016
11:01:20
только в рантайме придется через обручи попрыгать

Руслан
29.12.2016
11:01:31
Да не через обручи, все просто

Dmitry
29.12.2016
11:01:45
вместо того чтоб на этапе конпеляции получить проверенный и быстрый вызов конкретных методов

Руслан
29.12.2016
11:01:47
Так есть не сахар в скале?

Dmitry
29.12.2016
11:02:03
это не сахар, это функционал который назад в джаву не декомпилируется
из байткода

Руслан
29.12.2016
11:02:18
Скинь класс, я гляну ради интереса

Dmitry
29.12.2016
11:02:26
мне лень :(
сорян.