@scala_ru

Страница 1152 из 1499
Mikhail
17.12.2017
17:45:39
да, понятно что tq мне не подойдет. мне нужно вручную создать какое-то аст и пихнуть его в подстановки в paramType. Вопрос в том - какое?
тогда давай полный пример того, как ты хочешь скомпозить) потому что в целом инструкция выше, а дальше только частности и там по памяти я уже не скажу

а я все чаще замечаю, что верно чатом ты ошибся...

Александр
17.12.2017
17:53:33
не пропаганды ради, примера для

KrivdaTheTriewe
17.12.2017
17:54:51
Google
Александр
17.12.2017
17:56:37
чувство юмора оно как ноги

Alexey
17.12.2017
17:56:58
вот полный пример - https://gist.github.com/anonymous/8039ba9e5b8fee018b5be1b65bac4b6f

_
17.12.2017
17:59:02
чувство юмора оно как ноги
Не с той встал, и уже не в тему )

Mikhail
17.12.2017
17:59:37
чувство юмора оно как ноги
согласен. без них, как и без него - никуда. но наличие ног еще не говорит о том, что ты хороший бегун или ходун

Александр
17.12.2017
18:09:17
согласен. без них, как и без него - никуда. но наличие ног еще не говорит о том, что ты хороший бегун или ходун
сложный прекол это как если бы люди по праву возможности набирать на буквы брали на себя функцию групповой морали?

Alexey
17.12.2017
18:13:00
ну не кормите же ))

не превращайте это в чатик про раст

вот полный пример - https://gist.github.com/anonymous/8039ba9e5b8fee018b5be1b65bac4b6f
похоже что ответ это Select(Select(Ident("java"), TermName("lang")), TypeName("String"))

Alexander
17.12.2017
18:21:17
очень хорошо, харизмат - я ему поверил
+1 очень классный чел, я даже ностальгнул по клоджуре

Александр
17.12.2017
18:23:39
+1 очень классный чел, я даже ностальгнул по клоджуре
обидно что времени не хватило, как буд-то птице крылья обрезали посреди доклада

Mikhail
17.12.2017
18:24:08
похоже что ответ это Select(Select(Ident("java"), TermName("lang")), TypeName("String"))
что-то у меня макросы в чистом проекте не заводятся, компилит все, а использовать не могет. сейчас разберусь и гляну что там надо вставить, если сам не успеешь)

Владимир
17.12.2017
18:25:00
Alexey
17.12.2017
18:25:26
ну там же нужно два проекта соорудить. если что - https://github.com/scalamacros/sbt-example-paradise

Google
Alexey
17.12.2017
18:26:29
интересно есть попроще способ собрать такое аст из строки?

Mikhail
17.12.2017
18:33:52
похоже более правильное это Select(Select(Select(Ident("_root_"), TermName("java")), TermName("lang")), TypeName("String"))
да не, там этот полный путь не обязателен. стринг и так виден компилятору

Александр
17.12.2017
18:33:54
может быть он как Икар, подлетевший к солнцу?...
говорят что это обрезаная версия доклада с clojure дс2 митапа

Mikhail
17.12.2017
18:34:08
Alexey
17.12.2017
18:34:28
да не, там этот полный путь не обязателен. стринг и так виден компилятору
ну в реально жизни у меня там не стринг, а полное имя другого класса

Mikhail
17.12.2017
18:35:10
ну в реально жизни у меня там не стринг, а полное имя другого класса
для компиляции самого макроса это не важно, это важно только уже потом при раскрытии макроса если нет импорта в скоупе

Igor
17.12.2017
18:35:23
Александр
17.12.2017
18:36:06
Mikhail
17.12.2017
18:36:36
Ага. У меня импорта не будет. Его никто туда не положит :)
тогда там должно быть достаточно что-то типа def in() = tq"full.path.to.Item" , не обязательно ручками аст строить)

Igor
17.12.2017
18:36:49
Не записывали ?. Ходите на СПб fprog митапы

Alexey
17.12.2017
18:37:29
тогда там должно быть достаточно что-то типа def in() = tq"full.path.to.Item" , не обязательно ручками аст строить)
да, но fullpath не известен в компайл тайм максроса и вычисляется при исполнении. по этому tq не подойдет.

Mikhail
17.12.2017
18:45:46
да, но fullpath не известен в компайл тайм максроса и вычисляется при исполнении. по этому tq не подойдет.
тогда да. чистый тку не пойдет. но можно попробовать что-то в этом роде val ref1 = tq"hoho.poho" val ref2 = tq"bojo.mojo" val ref3 = tq"$ref1.$ref2" val ref4 = tq"$ref3.Bingo" ну и упрощать в зависимости от реального кейса в ту или иную сторону

Alexey
17.12.2017
18:46:37
Ага. Спасибо. Есть ещё typeOf если класс в класспасе компилятора

Eugene
17.12.2017
18:57:51
А жемчужина фпкон это конечно https://youtu.be/b-Eq4YV4uwc Надо было его на Кейноут ставить ?
Узнал человека - пару лет назад был у него на двухдневном воркшопе по devops. Правда он тогда про nodejs задвигал :/ но истории рассказывает интересно

Alexandr
17.12.2017
19:01:56
Господа, а можно оффтоп? Почему шелл в линуксах такой хороший, а в винде cmd.exe так плох? И почему именно cmd.exe можно облагородить, но нельзя заменить (не будем про powershell)

Eugene
17.12.2017
19:04:00
Замена cmd.exe это полумеры :)

Google
Alexandr
17.12.2017
19:09:41
Замена cmd.exe это полумеры :)
Она не исполнима в винде ,как я понимаю

Александр
17.12.2017
19:10:44
сама с собой cmd со времен доса еще не менялся

Mikhail
17.12.2017
19:33:09
Ага. Спасибо. Есть ещё typeOf если класс в класспасе компилятора
вобщем завелся у меня проект. хз что было, но с чистого листа по ранее проверенным шаблонам как обычно взлетает норм) val ref1 = q"some.pac.hee" val ref2 = q"$ref1.man.hell" val out = tq"String" val in = tq"$ref2.Future[$out]" val paramType = tq"$in => $out" paramType выдаст _root_.scala.Function1[some.pac.hee.man.hell.Future[String], String] вот так в hell2 будет нужный селект. причем в реф1, 2 надо именно q"" ставить, иначе он там последний берет как man#hell например, что по сути дальше должно при компиляции стопорнуться на реальном кейсе val ref3 = tq"$ref1.$ref2" - комбайн двух динамик не прокатывает ни в каком виде (правда я не сильно долго пытался, но за пару минут ничего подобрать не удалось)

Alexey
17.12.2017
19:38:19
так я показал как из динамики собрать)
да, но все равно нужно в структуру разбить. представь что есть просто val fqcn: String. Его никуда не впихнуть. Так?

Mikhail
17.12.2017
19:39:35
да, но все равно нужно в структуру разбить. представь что есть просто val fqcn: String. Его никуда не впихнуть. Так?
конечно. ведь компиляторы так не работают) единственный вариант в таком случае это какой-то parseRaw match { Success match{ case Type case OtherHrenPoimiKakayaKonstruccia}, Fail }

Alexey
17.12.2017
19:39:53
ага. спасибо

Mikhail
17.12.2017
19:55:42
да, но все равно нужно в структуру разбить. представь что есть просто val fqcn: String. Его никуда не впихнуть. Так?
если там именно fqcn - то по сути можно по быстрому val fqcn = "path1.path2.path3.path4.Future" val in = fqcn.split('.').toList match { case head :: tail => tail.foldLeft(q"_root_.${TermName(head)}"){ case (q, x) => q"$q.${TermName(x)}"} case _ => ??? } in = _root_.path1.path2.path3.path4.Future

Vladimir
18.12.2017
02:59:56
вот блин, я опять запутался. Вот пока мы работаем с типами всё понятно и вроде логично, но как мы переходим к значениями (а все к ним незаметно переходят, никак это не оговаривая) опять начинается путаница.
На типах пишутся теоремы, а значения — это доказательства. Если из входных типов получилось сконструировать выходные (без шаманств типа throw, ???, reflection, кастов, потому что они за пределами того, о чём говорит изоморфизм Карри-Ховарда), значит соотношение между типами доказано. И доказательством может быть любое корректное значение.

Oleg
18.12.2017
05:43:44
Кстати вот сейчас завезут синглтон типы, а кто нибудь вкурсе можно ли будет без шаманства сделать 1 + 2 на уровне типов
И тут я случайно дошёл по реплаям до вопроса. Кажется мне, что вайтбоксом несложно любой const expr сделать

Alexey
18.12.2017
05:47:50
Ну по сути да

Oleg
18.12.2017
06:02:08
Просто хотелось на уровне языка без плясок
А есть задача, где достаточно singleton int, т.е. можно обойтитсь без Nat и его более сложных бинарных вариантов, но асё же нужны операции над числами?

Aleksandr
18.12.2017
09:42:11
Привет всем возможно ли как-то вернуть failure из ask, чтобы не было в http роуте вот такого безобразия entity(as[Question]) { question val qaFuture = (qaActor ? question).mapTo[Message] onSuccess(qaFuture) { case answer: Answer => complete(OK -> AnswerResponse(answer)) case error: Error => complete(BadRequest -> ErrorResponse(error)) } } case object Message case class Question(...) extends Message case class Answer(...) extends Message case class Error(...) extends Message case class AnswerResponse(...) case class ErrorResponse(...)

Aleksei
18.12.2017
09:43:14
@a_beloglazov https://markatta.com/codemonkey/blog/2016/08/03/actor-per-request-with-akka-http тут вот есть варианты

Andrey
18.12.2017
10:03:30
Кто нибудь пользуется коннектором amqp из alpakka? Интересует насколько оно удобно в повседневном использовании

Google
Andrey
18.12.2017
10:03:51
Помню где то год назад коннектор для mq был какой то не очень удобный, пришлось завернуть в актора все

а теперь вот amqp нужен

Aleksandr
18.12.2017
10:44:46
вынести в метод можно, мне сама семантика не нравится, можно сделать complete(future), но тогда я получу HTTP ответ с ошибкой в случае failure этого future, а у меня там не failure, у меня Future.success разных типов

Admin
ERROR: S client not available

Oleg
18.12.2017
10:47:27
вероятно ты знаешь, что для того, чтобы превратить failure в success у фьючи есть методы recover[With]

или transform[With]

Eugene
18.12.2017
13:59:41
вопрос - кто какими библиотеками для Play2.6 для аутентификации/авторизации пользуется? все время использовал play2-auth, но автор забил на поддержку и она уже не актуальная ответы типа "play не нужен" не пишите пжлста :)

Eugene
18.12.2017
14:06:03
https://github.com/nulab/play2-oauth2-provider в свое время юзабельная была на 2.5
Ок посмотрю спасибо UPD - посмотрел, это oauth2, мне нужна аутентификация в самом приложении по логину/паролю

Vadim
18.12.2017
14:07:48
Народ вам наравиться как звучит: "Иплицитный конструктор"? ?

Grigory
18.12.2017
14:08:06
иплицитный?

звучит неплохо.

Vadim
18.12.2017
14:08:24
Ну или как том иплисит

Grigory
18.12.2017
14:09:46
в чем тема то а то не смекну никак?

Vadim
18.12.2017
14:10:29
Да чет фатназия разигралась

Вот имеем мы там всякие классы которые в коструткор получаю стрингу

и вот наш стрига пролучает вагон имплицыдных методов "toЧто-то"

Google
Vadim
18.12.2017
14:12:39
типа "hello".toSome

вместо Some("hello")

Grigory
18.12.2017
14:13:38
и?

Vadim
18.12.2017
14:14:58
Я что то должен добавить?

Grigory
18.12.2017
14:15:08
ну в чем соль то?)

Vadim
18.12.2017
14:15:39
Да как бы ни в чем, я же говорю фантазия играет

Eugene
18.12.2017
14:16:19
import scalaz._ "hello".some "hello".point[Option]

Oleg
18.12.2017
14:16:28
implicit def this(implicit foo: Foo)

Vadim
18.12.2017
14:18:03
Ой прикольно!

Mikhail
18.12.2017
14:19:13


ну в чем соль то?)
Мартин троллит скалачат)

Vadim
18.12.2017
14:19:59
Ааа спалили)

Grigory
18.12.2017
14:20:50
почему тогда про импилисты а не про дженерики шутил

Vadim
18.12.2017
14:20:59
Какой бы вам новый имплисит придумать? :D

Страница 1152 из 1499