Описание тега monocle-scala

Monocle is a Lens library, or more generally an Optics library where Optics gather the concepts of Lens, Traversal, Optional, Prism and Iso. Monocle is strongly inspired by Haskell Lens.
1 ответ

Являются ли опции Monocle такими же, как частичные линзы?

Опции Monocle имеют следующие функции доступа (для Optional[C,A]): getOption: C => Option[A] set: A => C => C Это противоречит первоначальному определению (частичной) асимметричной линзы данных. Я бы ожидал: getOption: C => Option[A] set…
15 ноя '15 в 21:51
1 ответ

Метод копирования и полиморфизм подтипов в Scala

Я пытаюсь решить следующую ошибку компилятора Scala ниже. case class CC[E](l:List[E]) trait D[E,L<:CC[E]]{ def f(l:L):L = l.copy(l=List()) // does not compile: "found CC[E], required: L" } В (псевдо)-Haskell (без подтипа) это будет что-то вроде: …
08 янв '17 в 03:34
2 ответа

Правильный синтаксис для обновления вложенной карты с помощью Monocle

Я видел официальный пример обновления Map но у меня проблемы с синтаксисом. val pod: Lens[Event, Pod] = GenLens[Event](_.`object`) val metadata: Lens[Pod, Metadata] = GenLens[Pod](_.metadata) val labels: Lens[Metadata, Map[String, String]] = GenLens…
13 дек '17 в 06:12
0 ответов

Добавить и удалить элементы списка

В примере университета объясняется, как добавлять и удалять элементы карты: (departments composeLens at("Physics")).set(Some(physics))(uni) (departments composeLens at("History")).set(None)(uni) Это не работает со списками, хотя: (lecturers composeO…
10 фев '18 в 13:01
0 ответов

Scala - копирование полей одного класса в другой, избегая дорогостоящих линз

В настоящее время мы используем линзы для копирования полей между различными классами дел. Но те из них являются дорогостоящими с точки зрения производительности, так как при наличии нескольких вложенных классов. Существуют ли альтернативы использов…
01 июн '18 в 12:37
1 ответ

Модификация карты через монокль

Я хотел попробовать линзы, и библиотека Monocle казалась (с моей нубистской точки зрения) хорошей со всеми этими модными без шаблонов @Lenses, К сожалению, я обнаружил, что для начинающих практически нет учебных материалов (я знаю основы FP в ваниль…
09 дек '15 в 16:36
1 ответ

Стоимость равенства при использовании линз monocle/scalaz

Я читал о Diode, и это заставило меня задуматься о линзах в Monocle / Scalaz: Если я (условно) глубоко изменяю некоторую часть глубоко вложенной структуры данных, используя линзу Monocle / Scalaz, и хочу сравнить, было ли изменение, нужно ли проводи…
21 янв '17 в 14:17
1 ответ

Как напечатать Monocle Lens в виде строки стиля метода доступа к свойству

Используя Monocle, я могу определить Lens для чтения элемента класса case без проблем, val md5Lens = GenLens[Message](_.md5) Это может использоваться для сравнения стоимости md5 между двумя объектами и завершается ошибкой с сообщением об ошибке, кот…
09 июн '17 в 10:01
1 ответ

Обновить глубоко вложенный класс дел с помощью параметров

У меня есть трехуровневая модель класса вложенных дел с кучей опций, которые представляют некоторые данные в базе данных. Это по сути: case class User(settings: Option[Settings]) case class Settings(keys: Option[List[KeySet]]) case class KeySet(priv…
11 апр '18 в 14:59
2 ответа

Как обновить карту с помощью монокля

Я хотел бы попробовать библиотеку Monocle. Но я не мог найти справочные ресурсы для базового синтаксиса. Короче мне нужна оптика Map[K,V] -> A с оптикой V -> AКак я могу определить это? Предположим, у меня есть немного import monocle.macros.Ge…
10 авг '15 в 12:46
1 ответ

Фильтрация списков в монокле Скалы

Учитывая следующий код: case class Person(name :String) case class Group(group :List[Person]) val personLens = GenLens[Person] val groupLens = GenLens[Group] как я могу "отфильтровать" определенных людей из выбора, не по индексу, а по определенному …
26 май '16 в 19:15
0 ответов

Есть ли способ использовать JsonPath Circe-Optics со строками, как в инструменте jq CLI?

Я бы хотел, чтобы дескриптор поля был определен как field1.field2[1].field3, значение доступа two из JSON: { "field1": { "field2": [ { "field3": "one" }, { "field3": "two" } ] } } Я знаю, что могу сделать это, используя applyDynamic а также root.fie…
09 мар '18 в 17:37
1 ответ

Эффективно и элегантно удалять элементы из списка структуры класса case

У меня есть вложенный case структура классов в List для простоты будем использовать следующие в качестве примера - case class Address(street: String, city: String, state: String, zipCode: Int) case class Person(firstName: String, lastName: String, a…
09 ноя '15 в 15:31
1 ответ

Как я могу использовать встроенные в Monocle юридические реализации для проверки своих объективов?

Я заметил, что в Monocle есть реализации законов линз, которые используются для тестирования внутренних библиотек. Они кажутся хорошо обобщенными и модульными. Я пытался использовать их для проверки своих собственных линз, но я потерялся в джунглях …
14 ноя '15 в 14:26
3 ответа

Как найти и изменить поле во вложенных классах?

Определены некоторые вложенные классы дел с List поля: @Lenses("_") case class Version(version: Int, content: String) @Lenses("_") case class Doc(path: String, versions: List[Version]) @Lenses("_") case class Project(name: String, docs: List[Doc]) @…
28 окт '15 в 11:35
1 ответ

Объектив / Призма с обработкой ошибок

Допустим, у меня есть пара функций преобразования string2int :: String -> Maybe Int int2string :: Int -> String Я мог бы представить их довольно легко, используя оптику. stringIntPrism :: Prism String Int Однако, если я хочу представить причин…
28 ноя '15 в 14:21
1 ответ

Определение дополнительных значений в пути, построенном с помощью составной оптики

У меня есть структура вложенных классов case, которые я создаю со значениями по умолчанию: case class Alpha(text: String = "content") case class Beta(alpha: Alpha = Alpha()) case class Gamma(beta: Option[Beta] = None) Я хотел бы создать все это со з…
22 фев '17 в 09:18
0 ответов

Сокращение монокля для преобразования двух запечатанных черт

У меня есть две изоморфные запечатанные черты, и я хочу легко конвертировать между ними. Я могу сделать это от руки так: import monocle.Iso sealed trait StrNum final case class Str(s: String) extends StrNum final case class Num(s: Int) extends StrNu…
28 ноя '17 в 17:45
1 ответ

Использование applyOptional в Monocle

Я пытаюсь выяснить, как использовать applyOptional. Я получил это: import monocle.function.all.index import monocle.macros.{GenLens, Lenses} import monocle.std.map._ import monocle.syntax.ApplyOptionalOps._ import monocle.function.Index._ val map: M…
14 июн '16 в 00:15
1 ответ

Объединить коллекцию линз

Monocle - это отличная библиотека (и не единственная), которая реализует шаблон линз, что замечательно, если нам нужно изменить одно поле в огромном вложенном объекте. Как в примере http://julien-truffaut.github.io/Monocle/ case class Street(number:…
16 авг '17 в 12:59