Вопросы по теме 'shapeless'

toList на бесформенном HList терпит неудачу, когда полученный экзистенциальный тип слишком сложен
Учитывая следующие определения: class R[T] class A class B class C Это работает: val s1 = new R[A] :: new R[B] :: HNil val r1 = s1.toList // r1 of type: List[R[_ >: A with B]] Пока это не так: val s2 = new R[A] :: new R[B] ::...
556 просмотров
schedule 02.04.2023

Бесформенный: проверка ограничений типа полиморфных функций
Я работаю над небольшой библиотекой для экономических моделей, которые проверяют единицы объектов, используя типы, например. вместо val apples = 2.0 пишем val apples = GoodsAmount[KG, Apples](2.0) . Для создания пачки товаров я пытался...
792 просмотров
schedule 03.02.2023

Shapeless на уровне типов: объединение элементов типа HList
Я хочу свернуть HList с этой монадой, но на уровне типа trait TypeMonad{ type Append[A,B] = A with B type Identity = Any } Следовательно, HList: "A :: B:: C :: HNil" даст тип "A with B with C with Any" Это довольно легко сделать,...
343 просмотров
schedule 24.08.2022

Использование фильтра в shapeless, Scala
Легко отфильтровать HList в бесформенных по типу: val hlist = 1 :: 2 :: "3" :: true :: false :: HNil hlist.filter[Int] Но как я могу создать фильтр собственного типа? Я хочу что-то вроде этого: например, я получил список некоторых функций:...
1431 просмотров
schedule 02.04.2023

Как обмануть Scala, чтобы ничего не находить повторяющиеся имплициты
Я пытаюсь использовать шаблон класса типов в Scala, чтобы пометить все допустимые сериализуемые типы API, чтобы мы могли обеспечить безопасность во время компиляции в отношении того, что мы сериализуем. Наша базовая библиотека принимает AnyRef , что...
166 просмотров
schedule 08.05.2023

Идиоматический Scala способ десериализации строк с разделителями в классы case
Предположим, я имел дело с простым текстовым протоколом, разделенным двоеточием, который выглядел примерно так: Event:005003:information:2013 12 06 12 37 55:n3.swmml20861:1:Full client swmml20861 registered [entry=280 PID=20864 queue=0x4ca9001b]...
650 просмотров
schedule 10.04.2022

Определение бесформенного заменителя
Интересно, как я могу исправить этот код Scala с помощью библиотеки Shapeless, чтобы он компилировался: object boo { import shapeless._ sealed trait Bibby case class LittleBibby(i: Int) extends Bibby case class BigBibby(s: String)...
174 просмотров
schedule 23.12.2022

Типы объединения Scala с замыканиями
Я пробую объединить типы Scala, определенные в этой записи блога Майлза Сабина: http://www.chuusai.com/2011/06/09/scala-union-types-curry-howard/ а также обсуждается в Как определить дизъюнкцию типов (типы объединения)? Для простого...
1404 просмотров
schedule 30.04.2022

Сделайте ковариантный фильтр в HList
Я намерен фильтровать HList ковариантным образом - я также хотел бы включить подклассы. Таким образом, ковариантный фильтр для Foo должен захватывать элементы Foo , а также Bar . Я создал этот пример, опробовав <:!< , чтобы посмотреть,...
264 просмотров
schedule 04.11.2022

выбор бесформенного HList вместо класса case
Каковы преимущества использования бесформенного HList по сравнению с классом case в Scala? В каких ситуациях вы не хотели бы использовать HList?
844 просмотров

Сопоставьте и уменьшите/сверните HList scalaz.Validation
Я начал с чего-то вроде этого: def nonEmpty[A] = (msg: String) => (a: Option[A]) => a.toSuccess(msg) val postal: Option[String] = request.param("postal") val country: Option[String] = request.param("country") val params = (postal |>...
643 просмотров
schedule 27.01.2023

Вектор HList от любого до бесформенного
Есть ли способ преобразовать вектор типа Any в Shapeless HList (productelement) val frame = Vector(Vector(1,"a","b",false),Vector(2,"y","z",false),Vector(3,"p","q",true)) frame.map(_.hlisted) or frame.map(_.productElements) Я пытаюсь...
272 просмотров

преобразование времени выполнения List в HList
Я хочу иметь общий список разных типов и хочу получать объекты определенного типа. У меня есть эта структура: trait Parent case class A() extends Parent case class B() extends Parent case class C() extends Parent Я могу определить разные...
1621 просмотров
schedule 17.05.2023

Написание класса типов с выбором, зависящим от контекста
Мой исходный код: sealed trait Adder[L <: HList, U] extends DepFn2[L, Vector[U]] object Adder { def apply[L <: HList, U: Ordering](implicit adder: Adder[L, U]): Aux[L, U, adder.Out] = adder type Aux[L <: HList, U, Out0] = Adder[L,...
94 просмотров
schedule 08.03.2023

Как использовать уточнение для выражения ограничений с помощью констант › 22
Я пытаюсь изучить возможности с уточнением (и бесформенностью), чтобы улучшить проверку типов. Я хотел бы представить типом некоторые ограничения интервала или размера. Итак, с уточнением я могу писать такие вещи: type Name = NonEmpty And...
530 просмотров
schedule 12.05.2023

Материализуйте значение для типа с одним обитателем
Благодаря ответу @MilesSabin я могу написать последовательность Фибоначчи уровня типа: sealed trait Digit case object Zero extends Digit case object One extends Digit sealed trait Dense { type N <: Dense } sealed trait DNil extends Dense {...
662 просмотров

Shapeless: ограничение типов классов case
(ПРИМЕЧАНИЕ: отдельно от Shapeless: попытка ограничить элементы HList по их типу и Shapeless: собственное ограничение HList с использованием Coproduct ) Вопрос 3. Ограничьте классы дел по типам параметров Очень хорошим дополнительным...
268 просмотров
schedule 23.07.2022

Кортеж бесформенной деконструкции в объявлении параметра типа
Я использую RightFolder, который возвращает Tuple2 и хотел бы вернуть часть _1 . Первая версия rightFoldUntupled1 работает нормально, но использует дополнительный класс типов IsComposite . Во второй версии rightFoldUntupled2 я пытаюсь...
214 просмотров
schedule 08.08.2023

Разрешение классов типа Coproduct не удается по неясным причинам
Я собираю небольшую библиотеку сериализации для Scala на Android ( Parcelable ). Но я продолжаю бороться с разрешением классов типов, связанных с Coproduct, которые, похоже, терпят неудачу в зависимости от имен файлов (?). Я впервые столкнулся с...
75 просмотров
schedule 16.06.2023

Могу ли я использовать shapeless для возврата той же арности HList, что и переданный HList?
Вот пример. Я пытаюсь обернуть некоторый внешний API, который принимает и возвращает ту же арность List : def externApi(args: List[Int]): List[String] = args.map(_.toString) Я подумал, что это хороший повод научиться бесформенному,...
136 просмотров
schedule 01.10.2022