Публикации по теме '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 просмотров
schedule
17.06.2022
Как использовать линзы для обхода и назначения некоторых (но не всех) элементов на карте
Я пытался использовать линзы и контейнеры вместе с некоторым успехом, но я столкнулся с ограничениями своего понимания, пытаясь использовать фильтрацию обходов 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 просмотров
schedule
19.09.2022
Есть ли прямой способ объединить сеттеры для нескольких полей записи с одним сеттером?
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