@scala_ru

Страница 803 из 1499
Alexey
07.07.2017
05:48:10
юзабельно только в vim

идея нихрена не видит

Nick
07.07.2017
05:53:41
печальненько)

@odomontois а ты что скажешь?

Google
Alex
07.07.2017
06:42:23
так глубоко копать в эту сторону не приходилось до этого

Oleg
07.07.2017
06:43:32
ты разве не знал, что в мире скалатипчикров паттерн-матчинг - это implicit def?
завести твою херню потенциально можно с помощью macro Dynamic, либо просто делая специализированные унаппплайеры

Alexey
07.07.2017
06:43:50
очень юзабельно, на ИДЕЮ привык забивать, но liberator всё равно круче
ну если забивать на идею, то да, выглядить очень даже очень

Nick
07.07.2017
06:44:34
очень юзабельно, на ИДЕЮ привык забивать, но liberator всё равно круче
мне понравилась идея с использованием free и tagless)

на самом деле я так понял, что они сделают поддержку идеи

Oleg
07.07.2017
06:45:03
Nick
07.07.2017
06:45:40
кароч ребзя делают правильный спринг

Nick
07.07.2017
06:54:46
пойду принесу в проект новое

Oleg
07.07.2017
06:55:13
правда, если гонять всё через копродукты фримонад, перфоманс в жёпу

Nick
07.07.2017
06:56:10
они типа эт оптимизируют

Google
Oleg
07.07.2017
06:56:26
ну правильнее сказать фримонады копродуктов алгебр

они типа эт оптимизируют
нет, не оптимизируют

A
07.07.2017
06:57:15
А это не компилятор должен делать?

Почему перформанс в жопу ?

Nick
07.07.2017
06:57:59
нет, не оптимизируют
один хер я возьму tagless xD

Oleg
07.07.2017
06:59:36
А это не компилятор должен делать?
а нет способа это соптимизировать в жвм, можно просто гонять чистыми тэглесс

Лично я думаю, что @module можно было бы соптимайзить в AnyRef

Но опять же только если это модуль чистых алгебр, вот этот @module trait App { val interaction: Interaction.StackSafe val validation: Validation.StackSafe val log: LoggingM }в рантайме наверняка же обёрка из Evalов

ну и главное, что эта вся фигня только для ровно одного специфичного случая Algebra[F[_]]

т.е. чуть влево, чуть вправо - пиши всё сам

A
07.07.2017
07:04:41
Акка лучше?)

Oleg
07.07.2017
07:06:06
Акка лучше?)
akka stream, как представитель Generalized Arrow лучше, но swave ещё круче

A
07.07.2017
07:11:45
О, узнал что-то новое

Oleg
07.07.2017
07:39:35
@notxcain расскажешь за скаламету в гиттере?

Как генерить тайп-параметры, пробую так val name = Type.Name ("foo") tparam"$name :Foo" получаю end of file expected but : found

Evgeniy
07.07.2017
07:42:21
нет, не оптимизируют
ну не то чтобы совсем нет, вот у них там https://www.47deg.com/blog/iota-v0-1-0-release/ с графиками что не совсем все плохо

Denis
07.07.2017
07:43:36
@odomontois я бы рад но сейчас не у компа и иду на посадку в самолет и может только в воскресение будет время. Самый луший варик если в лоб не работает, это сначала распарсить кусок кода посмотреть как он выглядит в скаламета аст, а потом собрать нечто похожее из аст и лишь потом через квазиквоты

Ну я так делал когда разбирался

Просто println dat shit

Oleg
07.07.2017
07:47:56
ну я смог сделать вот так tparam"T :TypeDefiner".copy(name = Type.Name(c.toString))

Google
Oleg
07.07.2017
07:48:07
а как нормально это имя в интерполяцию засунуть - не пойму

Oleg
07.07.2017
07:48:31
куда дальше этт кусок будет вставляться?
в другой код в качестве списка тайп-параметров

Если очень очень очень конкретно нужно, я генерю инстансы для

туплов

у меня есть val alphabet = 'A' to 'Z'

val tparams = alphabet.take(t).map { c => tparam"T :TypeDefiner".copy(name = Type.Name(c.toString)) }

Mikhail
07.07.2017
07:49:49
в другой код в качестве списка тайп-параметров
так дальше хочешь? def method(${param1}, ${param2}) ? вот эти парамы тебе надо?

Oleg
07.07.2017
07:50:13
def method[..$tparams]

Mikhail
07.07.2017
07:50:26
да нет же, тайппараметры
[ ... ] - квадратные?

во. ща

Mikhail
07.07.2017
07:51:26
val typ = Type.Name(p.decltpe.get.syntax) после этого можно использовать там где тип нужен val sss = q"def method[${typ} : ${typ}]

Type.Name - там стринг просто принимает

Mikhail
07.07.2017
07:52:27
это скаламета)

Oleg
07.07.2017
07:52:28
у меня нет p.decltpe

Mikhail
07.07.2017
07:52:57
p.declttpe - тебе не нужен - это просто я кусок у себя взял. там просто стринг в Type.Name идет

Google
Oleg
07.07.2017
07:52:59
короче, есть имя строкой, как сгенерить тайп-параметр с этим именем

список их

поэтому, как я сразу написал я использую tparam""

Mikhail
07.07.2017
07:54:14
список их
сейчас посмотрю как для списка, недавно с этим игрался

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

Oleg
07.07.2017
08:13:31
Ну т.е. странно, что интерполяция не принимает Type.Name, вроде он экстендит Type.Param.Name и всё должно быть ок

Mikhail
07.07.2017
08:14:28
Ну т.е. странно, что интерполяция не принимает Type.Name, вроде он экстендит Type.Param.Name и всё должно быть ок
val t1 = Type.Name("T1") val t2 = Type.Name("T2") val tpes = Seq(t1,t2) val mods = Seq.empty[Mod] val tparam = tparam"..$mods ${t1} : ..${tpes}"

Admin
ERROR: S client not available

Mikhail
07.07.2017
08:15:25
да, мир несовершенен. по крайней мере с ним компилится. не смотрел во что развернется, но похоже на правду

Oleg
07.07.2017
08:17:46
лал, вот так работает tparam"..$Nil $name :TypeDefiner"

Mikhail
07.07.2017
08:18:56
лал, вот так работает tparam"..$Nil $name :TypeDefiner"
ну тоже самое. просто заглушка же для емпти листа с нафингом)

Oleg
07.07.2017
08:19:44
да, просто смешно выглядит

Mikhail
07.07.2017
08:22:00
#scalameta , чтобы потом в хистори найти. а то я постоянно эту ерунду заново прохожу)

Nick
07.07.2017
08:22:15
@odomontois а ты про iota чтот сказал?

Oleksandr
07.07.2017
08:22:36
запилите ишью в парсере — такую фигню можно на его уровне исправить

(про необходимый список модификаторов)

Oleg
07.07.2017
08:23:28
@odomontois а ты про iota чтот сказал?
ааа нет, но йота - это всё равно обёртка, просто обёртка с интом

Nick
07.07.2017
08:24:24
Я прост не видел

Google
Oleg
07.07.2017
08:25:59
но мне нравится название вот этого объекта https://github.com/frees-io/iota/blob/master/modules/core/src/main/scala/iota/internal/catryoshka.scala

догадываюсь, что это маленький клон slamdata/matryoshka

ну да /** A gross oversimplification/hack of Matryoshka, but for Cats * instead of Scalaz, and also tailored to the specific needs * of Iota.

Nick
07.07.2017
08:38:05
Картешка лель

Картошка

Нужны было

Создай им баг

A
07.07.2017
08:46:30
>> Создай им баг ?

Mikhail
07.07.2017
08:52:18
Создай им баг
не было печали, пока баг не создали

Nick
07.07.2017
08:52:54
Я лично поставлю палец вверх, если создадите

Mikhail
07.07.2017
08:53:01
запилите ишью в парсере — такую фигню можно на его уровне исправить
https://github.com/scalameta/scalameta/issues/1006 - правильно? или не туда или не так? ?

A
07.07.2017
08:53:03
жили ребята жили, а потом им баг создали

Oleksandr
07.07.2017
08:54:52
https://github.com/scalameta/scalameta/issues/1006 - правильно? или не туда или не так? ?
? вроде там распилили на scalamacros, но парсер ещё в этой репе

Oleg
07.07.2017
08:54:54
https://github.com/scalameta/scalameta/issues/1006 - правильно? или не туда или не так? ?
Seq.empty[Mod] - тут, конечно, требует уточнения, учитывая, что они принимают только immutable.Seq а scala.Seq = collection.Seq

Oleksandr
07.07.2017
08:55:39
https://github.com/scalameta/scalameta/blob/1af15eb96c30c437d1b4aa57aca1740a36ed44a4/scalameta/parsers/shared/src/main/scala/scala/meta/internal/parsers/ScalametaParser.scala#L2614-L2654

Mikhail
07.07.2017
08:55:44
Seq.empty[Mod] - тут, конечно, требует уточнения, учитывая, что они принимают только immutable.Seq а scala.Seq = collection.Seq
так без импортов мутабла по дефолту и есть иммутабл) думаю, что не критично. я скомпилял - проверил. норм

Oleksandr
07.07.2017
08:55:50
если совсем скучно, можно тут поправить)

Oleg
07.07.2017
08:58:45
так без импортов мутабла по дефолту и есть иммутабл) думаю, что не критично. я скомпилял - проверил. норм
неа, есть collection.Seq immutable.Seq <: collection.Seq mutable.Seq <: collection.Seqвот простой код без дополнительных импортов с Seq.empty не компилится, потому что по дефолту это collection.Seq

type mismatch when unquoting; [error] found : Seq[scala.meta.Mod] (in scala.collection) [error] required: Seq[scala.meta.Mod] (in scala.collection.immutable) [error] name => tparam"..${Seq.empty[Mod]} $name :TypeDefiner"

Mikhail
07.07.2017
09:00:05
Oleg
07.07.2017
09:03:39
Кстати, в шаплеззе тоже задумываются об ускорении Miles Sabin @milessabin июль 03 16:33 @/all someone was talking to me recently about an hlist implementation which was backed by an array. Embarrassingly I've completely forgotten who that was and I can't track down the conversation. IIRC I suggested that they look at the smc branch to see if if their implementation might fit into that approach. Olivier Blanvillain @OlivierBlanvillain июль 03 17:36 @milessabin There is this lampepfl/dotty#2199 (still wip), and Szeiger's work on HArray, if anyone has something else no the subject please ping me as well!

т.е. возможно у нас всюду будут HList ы на арраях и копродукты на int tag ах

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