Публикации по теме 'lenses'


Упрощенные линзы в JavaScript с reshape-ramda
reshape-ramda — это библиотека, которая использует обратное сопоставление шаблонов, чтобы сделать линзы очень простыми. /* Creates lens from anything implementing: { a: any, b: { c: any } } to: { x: any, y: any } */ lensFromPattern({ a: 'x', b: { c: 'y', }, }) Линзы особенно полезны в JavaScript, но с ними может быть немного сложно работать. Очень популярной библиотекой для линз является Ramda , и она дает три основных способа изготовления линз: lens : передайте ему..

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

линзы, fclabels, data-accessor - какая библиотека для доступа к структуре и мутации лучше
Существует как минимум три популярных библиотеки для доступа к полям записей и управления ими. Я знаю такие: data-accessor, fclabels и линзы. Лично я начал с средств доступа к данным и использую их сейчас. Однако недавно о haskell-cafe было...
17073 просмотров
schedule 08.10.2021

Для чего используются линзы?
Кажется, я не могу найти объяснения того, для чего используются линзы в практических примерах. Этот короткий абзац со страницы Hackage - самый близкий, который я нашел: Эти модули обеспечивают удобный способ доступа к элементам конструкции и...
4665 просмотров
schedule 16.10.2021

Как мне обработать результат Maybe для at в Control.Lens.Indexed без экземпляра Monoid
Я недавно обнаружил пакет Lens на Hackage и сейчас пытаюсь использовать его в небольшом тестовом проекте, который в один прекрасный день может превратиться в сервер MUD / MUSH, если я продолжу над ним работать. Вот уменьшенная версия моего кода,...
2022 просмотров
schedule 20.10.2021

Изменить состояние с помощью монадической функции с линзами
Мой вопрос очень похож на Как изменить с помощью монадической функции с линзы? Автор спросил, существует ли что-то подобное overM :: (Monad m) => Lens s t a b -> (a -> m b) -> s -> m t Ответом был mapMOf. mapMOf ::...
728 просмотров
schedule 20.11.2021

составление линз с использованием ramda
Я пытаюсь запросить содержимое вложенного объекта coor . const data = [ [ [{geo: {coor: [1,2]}}, {geo: {coor: [4,5]}}], {} ], [ [{geo: {coor: [8,2]}}, {geo: {coor: [9,5]}}], {} ] ] Результат должен быть: [[[1, 2], [4, 5]], [[8,...
433 просмотров
schedule 23.09.2021

Использование бесформенных линз с определением струны
Я хотел бы использовать бесформенные линзы для доступа к значению поля класса case с помощью определения String. Я знаю, что этот код работает. case class Test(id: String, calc: Long) val instance = Test("123232", 3434L) val lens = lens[Test]...
725 просмотров
schedule 04.03.2022

Создание предикатов с линзами
Я хочу создать функцию A -> Bool , используя некоторые линзы A. Например: data A = A { _foo :: Int, _bar :: Int } makeLenses ''A l :: [A] l' = filter (\a -> a^.foo > 100) l Предикат фильтра выглядит немного неуклюжим....
565 просмотров
schedule 10.05.2022

Как я могу использовать `over` из Control.Lens, но выполнять монадическое действие и собирать результаты?
Проблема довольно проста. У меня есть структура, которая выглядит примерно так data Foo = Foo [Bar] data Bar = Boo | Moo Item Int data Item = Item String Int и у меня есть линза для изменения содержимого Item s внутри структуры данных,...
305 просмотров
schedule 25.05.2022

Как использовать один и тот же селектор записей двумя способами внутри функции? Линзы?
У меня есть некоторые данные, которые имеют разные представления в зависимости от параметра типа, а-ля Sandy Maguire's Higher Kinded Data . Вот два примера: wholeMyData :: MyData Z wholeMyData = MyData 1 'w' deltaMyData :: MyData Delta...
56 просмотров

Как использовать линзы для обхода и назначения некоторых (но не всех) элементов на карте
Я пытался использовать линзы и контейнеры вместе с некоторым успехом, но я столкнулся с ограничениями своего понимания, пытаясь использовать фильтрацию обходов Data.Map - я могу изменить отдельные экземпляры на карте или пройти все экземпляры, но я не...
925 просмотров
schedule 06.08.2022

Scalaz: как составить линзу карты с линзой значения?
Вот пример объектива карты Scalaz здесь : Дэн Бертон называет его containsKey , и он вдохновлен выступлением Эдварда Кметта. В Scalaz 7 также есть нечто, называемое mapVPLens , которое полезно для изменения значений на карте. У меня такой...
1149 просмотров
schedule 18.08.2022

Рекурсивный макрос Scala?
Мне было интересно, поддерживает ли Scala рекурсивное расширение макросов, например. Я пытаюсь написать библиотеку объективов с макросом линз, который делает следующее: case class C(d: Int) case class B(c: C) case class A(b: B) val a =...
549 просмотров

Есть ли прямой способ объединить сеттеры для нескольких полей записи с одним сеттером?
import Control.Lens import Control.Lens.TH data Foo = Foo { _bar, _baz :: Int } makeLenses ''Foo Теперь, если я хочу изменить оба поля int, я могу сделать barbaz :: Setter' Foo Int barbaz = sets $ \foo f -> foo & bar %~ f...
440 просмотров
schedule 19.09.2022

Состав линз Scalaz
Здесь действительно простой вопрос. После просмотра отличного введения в объективы: http://www.youtube.com/watch?v=efv0SQNde5Q Я подумал, что могу попробовать один из простых примеров, рассмотренных в докладе: import scalaz.Lens._...
1106 просмотров
schedule 14.05.2023

дерево обхода с линзами и молниями
Я изучаю пакет Lens. Должен сказать, что это довольно сложная задача. Может ли кто-нибудь показать мне, как пройти по дереву с застежкой-молнией из объектива? В частности, как я могу написать функцию, которая берет список корней и позволяет мне...
2283 просмотров
schedule 21.02.2023

Получение нескольких результатов с карты с линзой
Имея этот импорт: > import Control.Lens Control.Lens> import qualified Data.Map as Map и значение карты, определенное следующим образом: Control.Lens Map> let m = Map.fromList [('a', 1), ('c', 3), ('b', 2)] Я могу получить...
1752 просмотров
schedule 01.04.2023

Можно ли создать новую запись с помощью линз?
Если у меня есть тип записи с линзами, можно ли создать новую запись без использования базовых средств доступа к записям? {-# LANGUAGE TemplateHaskell #-} import Control.Lens import Control.Lens.TH data Foo = Foo { _s :: String ,...
750 просмотров
schedule 08.05.2023

Что это за комбинатор объективов?
Делаю комбинатор линз на Ruby и не могу сообразить, какое у него общепринятое название. Неизвестная функция объединяет две линзы с одинаковым типом источника и типа цели (используя Benjamin C. . Терминология Пирса ) — это хэш-карта. Неизвестная...
370 просмотров
schedule 01.09.2023

Использование объектива дважды
Я борюсь с использованием библиотеки lens для конкретной проблемы. я пытаюсь пройти обновленная структура данных объектив, сфокусированный на части этой обновленной структуры к другой функции, g . Я передаю и линзу, и структуру...
335 просмотров
schedule 25.03.2023

Переменная типа вышла бы за пределы своей области видимости
Я пытаюсь реорганизовать свою функцию, задав ей аргумент объектива (из пакета xml-lens ). Я что-то упустил в квантификаторах типов. Что здесь происходит? *Main> let z name = listToMaybe $ pom ^.. root ./ ell name . text *Main> :t z z ::...
2041 просмотров
schedule 20.09.2023