Описание тега coproduct
1
ответ
Shapeless: перебирать типы в копродукте
Я хочу сделать что-то действительно простое, но я изо всех сил пытаюсь выработать правильный поиск или просто понять некоторые из решений, которые я видел. Дан метод, который принимает параметр общего типа, который является Coproduct; def apply[T &l…
18 сен '17 в 21:41
1
ответ
Как сделать только несколько типов данных, не связанных друг с другом, приемлемыми для дженериков
Есть черта, которая работает отлично. Тем не менее, я хотел бы реорганизовать часть, относящуюся к generic [T], чтобы ограничить тип данных, который может быть принят generic [T] (мне нужны только Option[JsValue], JsValue, StringEnumEntry, String). …
02 июл '18 в 09:30
1
ответ
У меня двойная кодировка
Этот вопрос поднимался несколько раз в последнее время, поэтому я задаю его здесь. Предположим, у меня есть несколько классов дел, как это: import io.circe._, io.circe.generic.semiauto._ object model { case class A(a: String) case class B(a: String,…
01 июн '17 в 13:55
0
ответов
Как определить значение дискриминатора для кодеков, которые производятся совместно?
Не могли бы вы объяснить, как на самом деле работают побочные продукты? Вот мой код sealed trait ArdbData case class ArdbDataString(value: String) extends ArdbData case class ArdbDataLong(value: Long) extends ArdbData case class ArdbDataDouble(value…
11 июн '17 в 08:59
2
ответа
Классы экзистенциальных типов против конструкторов данных и копроизведений
Я сталкиваюсь с тем же шаблоном в моих проектах, где я начинаю с типа с несколькими конструкторами данных, в конце концов хочу иметь возможность печатать на этих конструкторах данных и, таким образом, разбивать их на свои собственные типы, чтобы пот…
24 окт '18 в 15:39
0
ответов
Библиотека для сопоставления с образцом бесформенного копроизведения с частичными функциями
У меня есть относительно эргономичный образец, который я использую, чтобы соответствовать образцу Coproducts. Это выглядит в основном так val stringOrInt: String :+: Int :+: CNil = Coproduct("Hello world") implicit class Coproduct2Syntax[A, B](val v…
08 июн '19 в 03:20
1
ответ
Получите конкретную реализацию параметризованного признака из параметризованной функции
Попытка получить параметризованную функцию, которая вернула бы указанный сопродукт признака. sealed trait Tr { def x: Int } case class Cl1(x: Int) extends Tr case class Cl2(x: Int) extends Tr def getTr[A <: Tr](i: Int): A = { ??? } Как этого доби…
13 ноя '19 в 00:43
0
ответов
Подготовьте более двух дополнительных продуктов в Shapeless
Я хотел бы добавить более двух отдельных копродуктов в один: import shapeless.syntax._ case class Aa(name: String) case class Bb(age: Int) case class Cc(ok: Boolean) case class Dd(x: Long) case class Ee(y: Double) case class Ff(z: Option[String]) ty…
20 янв '20 в 18:30
1
ответ
Копродукты в бесформенном виде не собираются
Я экспериментирую с shapeless а теперь пытаюсь понять Genericдля копродуктов. Вот что я пробовал: object ShapelessExperiments { final case class Test1() final case class Test2() final case class Test3() type Test = Test1 :+: Test2 :+: Test3 :+: CNil…
06 дек '19 в 13:55
1
ответ
Тип GADT как бесформенный продукт - как построить интерпретатор с произвольным количеством алгебр
Скажем, у меня два типа GADT. abstract class Numbers[A]() case class IntType() extends Numbers[Int] abstract class Letters[A]() case class EnglishType() extends Letters[String] И у меня есть интерпретатор для каждого из типов GADT, который распечата…
06 мар '20 в 08:36
1
ответ
«Распределительная собственность» с Shapeless
Не уверен, что правильный термин — «распределительная собственность», но я помню, как изучал это в школе, поэтому вот пример того, что я пытаюсь сделать: Данный: type MyHList = (A :+: B :+: C :+: CNil) :: (Foo :+: Bar :+: CNil) :: HNil есть ли какой…
13 дек '22 в 20:43
0
ответов
Scala 2.13 - Используйте ADT для расширения запечатанного типажа Scala
Я видел несколько примеров использования ADT для расширения типов данных, чтобы они соответствовали любому из вариантов, но я немного запутался в том, как реализовать это в таком случае использования. В случае классов я бы создал их и просто добавил…
22 ноя '22 в 02:41