@scala_ru

Страница 790 из 1499
Юрий
03.07.2017
08:15:57
+

в стек трейс смотри

A
03.07.2017
08:16:11
это формат вида /file/name/class.scala:number

а я хочу прям код

Google
A
03.07.2017
08:16:28
код метода, который свалился

Dmitriy
03.07.2017
08:16:39
в классфайлах нет кода

A
03.07.2017
08:17:12
ну вот, спасибо

Oleksandr
03.07.2017
08:17:13
можно поверху навернуть любой редактор кода

class.scala — это не .class

Alexey
03.07.2017
08:17:27
такое прокатит только с макросами, которые в лог тебе заранее подставят строки

Oleksandr
03.07.2017
08:17:30
или я снова не понял)

Oleg
03.07.2017
08:18:10
Но не модно без котов
вот без котов, простое решение без патмат import shapeless._ object tryFold extends Poly1 { implicit def onError[T] = at[util.Failure[T]](fail => s"error ${fail.exception}") implicit def onSuccess[T] = at[util.Success[T]](x => s"success ${x.value}") } Generic[Try[Int]].to(Try(f)).map(tryFold).unify

Kirill
03.07.2017
08:19:23
Вот, как мне упростить вот это : https://scalafiddle.io/sf/bRX3XIK/0

Grigory
03.07.2017
08:22:50
кошек вставь

Oleg
03.07.2017
08:30:10
Вот, как мне упростить вот это : https://scalafiddle.io/sf/bRX3XIK/0
case class LoggingTry[T](tr: Try[T]) { def logErr(t: Throwable) = ??? def logSuc[A](x: A) = ??? def report() = tr.fold(logErr, logSuc) } implicit val loggingTry = new MonadError[LoggingTry, Throwable] { def pure[A](x: A): LoggingTry[A] = LoggingTry(util.Success(x)) def flatMap[A, B](fa: LoggingTry[A])(f: (A) => LoggingTry[B]): LoggingTry[B] = { fa.report() LoggingTry(fa.tr.flatMap(f andThen (_.tr))) } def tailRecM[A, B](a: A)(f: (A) => LoggingTry[Either[A, B]]): LoggingTry[B] = LoggingTry( Monad[Try].tailRecM(a){ x => val res = f(x) res.report() res.tr } ) def raiseError[A](e: Throwable): LoggingTry[A] = LoggingTry(util.Failure(e)) def handleErrorWith[A](fa: LoggingTry[A])(f: (Throwable) => LoggingTry[A]): LoggingTry[A] = LoggingTry(MonadError[Try, Throwable].handleError(fa.tr)(f andThen (_.tr))) }}

А ещё подождите

Nick
03.07.2017
08:32:59
упростил так упростил)

Google
Oleg
03.07.2017
08:33:03
Я упоминал фриманатки?

Kirill
03.07.2017
08:33:06
Я сначала хотел написать, что букв много, но потом ты отредактировал сообщение....

Oleg
03.07.2017
08:33:38
Просто делаешь логирующий интерпретатор для Either и всё

Vadim
03.07.2017
08:36:01
а не проще просто имплицит класс на try с функцией, которая принимает как логировать и возврщает тот же try

Nick
03.07.2017
08:39:50
а не проще ли обычный try catch заюзать ?

Oleg
03.07.2017
08:40:06
Просто делаешь логирующий интерпретатор для Either и всё
object LoggingTryInterpreter extends (Try ~> Id) { def apply[A](fa: Try[A]): Id[A] = fa.fold(???, x => {???; x}) }

а не проще ли обычный try catch заюзать ?
На самом деле ему нужен Validation

Oleksandr
03.07.2017
08:40:32
ну теперь-то вопросов к коду нет, все идеально ясно с первого взгляда

Nick
03.07.2017
08:40:43
Alexey
03.07.2017
08:41:41
Люди подскажите, реально ли в цепочке тасков запустить асинхронно какие то два таска в разных контестах?

я всё пытаюсь для себя найти альтернативу фьючам, но всегда упираюсь в какое нибудь гавно

Alexey
03.07.2017
08:44:39
ну что то типо val task = for { _ <- t1 res <- t2 } yield t2 t2.runAsync ну и типо запустить t1 в одном контексте а t2 в другом

Oleg
03.07.2017
08:44:59
так какие таски?

Alexey
03.07.2017
08:45:23
ну monix например

Oleg
03.07.2017
08:45:39
да. Просто явно указываешь и всё

flatMap ручками

Google
Oleg
03.07.2017
08:46:22
и поли выглядит как паттерн матч, так смешнее

Grigory
03.07.2017
08:47:19
тот же паттерн матчинг ток по типам

KrivdaTheTriewe
03.07.2017
08:47:49
мне очень меп и флетмеп по типам нравится )

Oleg
03.07.2017
08:48:17
мне очень меп и флетмеп по типам нравится )
что ты подразумеваешь под мэп и флэтмэпом по типам?

если HList\Coproduct, то они не по типам

Oleg
03.07.2017
08:49:04
но они не по типам

Grigory
03.07.2017
08:49:10
не надо только значения и типы путать)

Oleg
03.07.2017
08:49:44
это флэтмэп по Значениям, только функция ad-hoc полиморфная

Grigory
03.07.2017
08:50:04
(и по аргументу и по результату)

KrivdaTheTriewe
03.07.2017
08:50:52
но можно же написать .type

Oleg
03.07.2017
08:51:09
но можно же написать .type
где можно так написать?

Grigory
03.07.2017
08:51:30
ну типа объекта тип

ну так // Case апликация // и применяется поли

Oleg
03.07.2017
08:52:26
.type - это singleton тип, который равен типу ровно одного вот этого конкретного значения, он не заматчится с более общим типом

KrivdaTheTriewe
03.07.2017
09:08:13
.type - это singleton тип, который равен типу ровно одного вот этого конкретного значения, он не заматчится с более общим типом
object Krivda extends Poly1 { implicit val intCase: Case.Aux[Int, Long] = at(_.toLong) implicit val stringCase: Case.Aux[String, Long] = at(_.length.toLong) implicit val booleanCase: Case.Aux[Boolean, Long] = at( bool => if (bool) 228 else 'k' + 'r' + 'i' + 'v' + 'd' + 'a') } object Example { import Krivda._ val a = HList(100, 100, true).map(Krivda) }

Но ты прав, там по значению :(

Google
KrivdaTheTriewe
03.07.2017
09:11:11
ничем , это подтверждение твоих слов и мой фейл.

но вообще , ты получаешь лист типов на вход , на выходе получаешь лист других типов , ровно то что и делает меп функтора

тогда как должен выглядит меп над типами ?

Oleg
03.07.2017
09:19:04
но вообще , ты получаешь лист типов на вход , на выходе получаешь лист других типов , ровно то что и делает меп функтора
Соглашаюсь Если рассматривать HList ы как нетипизированные списки типов, можно рассматривать операции shapeless.ops.hlist как набор таких же нетипизированных операций над списком. Но это будут такие map и flatMap из ЛИСПа. Чтобы провести аналогию с map и flatMap из скалы, нам нужно было бы рассматривать более жёсткую форму листов с гарантированным Kind у своих элементов

A
03.07.2017
09:19:42
как делаются библиотеки в scala ?

Admin
ERROR: S client not available

Mikhail
03.07.2017
09:19:45
A
03.07.2017
09:19:48
https://github.com/sbt/sbt-assembly ?

Mikhail
03.07.2017
09:21:16
https://github.com/sbt/sbt-assembly ?
нет конечно. обычный жарник без зависимостей внутри

A
03.07.2017
09:21:52
ну и как он делается, я нуб

http://www.joescii.com/2014/02/24/oss-scala-starter-kit/ ?

Oleg
03.07.2017
09:22:36
Просто у Mapper в shapeless.ops.list ты не получаешь: - гарантию сохранения длины списка - гарантию перехода из KindA в KindB каждого элемента

Mikhail
03.07.2017
09:22:36
ну и как он делается, я нуб
а тебе для чего? если просто для локальных нужд, то достаточно выполнить в сбт publishM2

A
03.07.2017
09:23:19
хочу свою приблудку для https://bugsnag.com расшарить

Mikhail
03.07.2017
09:24:02
A
03.07.2017
09:24:09
опенсорс

что-то гугл меня в 10 мест посылает

Mikhail
03.07.2017
09:25:46
опенсорс
у тебя там клиент для отсылки данных в этот багснап? я к тому, что если так то наверное в первой версии либы тебе не потребуется паблишить версию под скалажиэс

Google
A
03.07.2017
09:26:09
версии для жс и не будет

Mikhail
03.07.2017
09:32:51
вобщем 1. вот тебе пример конфига для паблишинга https://github.com/Rudogma/scala-supertagged . Обрати внимание на файлы build.sbt, project/Build.scala, project/plugins.sbt 2. убираешь оттуда все, что делается для кросспрожекта и делаешь тоже самое для обычного рутового проекта (если субмодулей у тебя нет) 3. тебе там еще пгп надо будет ключик сделать 4. зарегать акк на и сделать тикет чтобы забрать под себя группу (в случае sbt - это organization := "org.rudogma"). пример тикета https://issues.sonatype.org/browse/OSSRH-32078 . домен придется зарегать, хотя наверное можно сделать что-то типа com.github.myaccount - тут не знаю. я просто зарегал домен под группу и зарегал акк на осс с ящика с этого же домена - тогда там все автоматом выделяют и вопросов лишних не задают 5. когда тикет сделают и подтвердят право на паблишинг под этой группой, надо будет залить первую версию +publishSigned, затем sonatypeRelease . потом в тикете отписаться (только после первого раза) - если все норм, твой релиз разрешат и он скоро появится в централе (10 минут физ доступность, несколько часов - доступность в поиске на вебморде серч.централ) и все остальные релизы можно будет паблишить автоматом

A
03.07.2017
09:35:09
что за дурдом, как будто у гос-ва что-то выскуливаю

жава сложная

Mikhail
03.07.2017
09:35:59
A
03.07.2017
09:36:17
ну как в руби ?

раз, два, готов гемчик

Mikhail
03.07.2017
09:36:48
A
03.07.2017
09:37:31
я про одобрения и доступ

Mikhail
03.07.2017
09:38:02
тикет с забором группы под себя простая формальность и защита от дурака, чтобы всякие полоумные не создавали кучу мусора

Oleg
03.07.2017
09:38:15
я про одобрения и доступ
можешь паблишить в bintray

A
03.07.2017
09:38:43
ладно, Mikhail спасибо

Mikhail
03.07.2017
09:40:05
ладно, Mikhail спасибо
кстати - да, в бинтрей вон тоже можно. резолверы под него тоже легко включаются и можно мусор всякий пихать

можно там под гугл косить. никто и не заметит. может на сайтах потом будут ссылаться и говорить, что гугель новую либу запаблишил, решил отказаться от аналитикса и сделал багснаг главным сервисом для сбора стат

Nick
03.07.2017
10:10:39
а у нас тут есть мастера дизраптора?

Alex
03.07.2017
10:13:55
Из Доты или из Computer Science? :)

Aleksei
03.07.2017
10:15:48
я тоже хотел сказать, что на него арканы нет, так что ни

даже у ИО есть аркана

но я так подозреваю по ИО тут больше спецов

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