Вопросы по теме 'haskell-lens'
Как мне обработать результат Maybe для at в Control.Lens.Indexed без экземпляра Monoid
Я недавно обнаружил пакет Lens на Hackage и сейчас пытаюсь использовать его в небольшом тестовом проекте, который в один прекрасный день может превратиться в сервер MUD / MUSH, если я продолжу над ним работать.
Вот уменьшенная версия моего кода,...
2022 просмотров
schedule
20.10.2021
Значение по умолчанию, если его нет на карте
Для моих целей мне нужен контейнер, похожий на карту, с какими-то «свойствами». Не исключено, что мои объекты могут иметь разные свойства. Для доступа к свойствам я решил использовать Control.Lens , это очень интересно. Но я не могу найти подобный...
1150 просмотров
schedule
06.09.2021
Как увеличить кислотное состояние?
data Foo = Foo {
_bar :: Map String Integer
} deriving (Eq, Ord, Read, Show, Data, Typeable)
$(deriveSafeCopy 0 'base 'Foo)
$(makeLenses ''Foo)
Учитывая приведенный выше код, у меня сложилось впечатление, что это должно быть возможно:...
284 просмотров
schedule
30.10.2021
Как написать сложный объектив, который зависит от других объективов, используя библиотеку объективов?
На данный момент у меня есть тип WorkLog с датой начала и окончания. Я хочу также добавить линзу продолжительности, которая будет выводиться из дат начала и окончания. Он должен быть либо только для чтения, либо изменить дату окончания, если его...
185 просмотров
schedule
07.10.2021
Как concatMap по всем парам ключ / значение в Aeson.Object с помощью линз
Я дурачился с комбинаторами в Control.Lens.Indexed, особенно _ 1_ , но мне не удалось придумать функцию со следующим type-sig, используя _ 2_ lens:
func
-- list of key/value pairs, essentially
:: Aeson.Object
--...
82 просмотров
schedule
24.09.2021
Как переставить объект Aeson.Object с помощью линз?
Кажется, я сохраняю застревать , когда я обращаюсь за линзами, чтобы преобразовать какой-нибудь JSON.
После синтаксического анализа этого в _1 _...
{
"action": {
"action": "reply",
"replies": [
"Does this work?",
"What...
81 просмотров
schedule
14.10.2021
Функциональное обновление произвольно вложенных структур данных с линзами
Скажем, у меня есть структура данных, представляющая Bag of Holding, которая может содержать несколько элементов. Пользователь может поместить в этот мешок еще один Мешок Холдинга, и этот мешок может содержать другие мешки или даже мешки с мешками....
228 просмотров
schedule
21.03.2022
Экземпляр Zoom над Free Monad
Я пытаюсь создать бесплатную монаду (используя free ), которая действует так же, как монада StateT , но который также позволяет запускать монады в базовом состоянии AppState . У меня есть отдельный конструктор LiftAction , который содержит эти...
168 просмотров
schedule
18.04.2022
Как использовать библиотеку объективов?
Я снова зашел в тупик, пытаясь работать с библиотекой Edwards lens . Я пытаюсь что-то snoc добавить в конец вектора в контексте состояния:
data Foo = Foo {
_vec :: Vector Int
}
makeLenses ''Foo
testCons x = vec <>= singleton x...
274 просмотров
schedule
02.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
Ошибка haskell изменяет пользовательский ввод на пользовательский тип данных в функции
handleStatements :: [Term] -> IO ()
handleStatements statements = do
let (queries, clauses) = partition isQuery statements
mapM_ (clausesEntailProof clauses) queries
--apply clauses to queries and ignore result
handleArgs ::...
37 просмотров
schedule
04.06.2022
Как использовать один и тот же селектор записей двумя способами внутри функции? Линзы?
У меня есть некоторые данные, которые имеют разные представления в зависимости от параметра типа, а-ля Sandy Maguire's Higher Kinded Data . Вот два примера:
wholeMyData :: MyData Z
wholeMyData = MyData 1 'w'
deltaMyData :: MyData Delta...
56 просмотров
schedule
17.06.2022
Как упростить вызов поля по имени полиморфного поля в один класс типов
В предыдущем вопросе я спросил, как можно сделать поле записи полиморфным при использовании DuplicateRecordFields. Я получил отличный ответ на этот вопрос от @user2407038 . Он ответил на вопрос моей первоначальной спецификации, предоставив один...
90 просмотров
schedule
24.06.2022
Примените два фолда или геттера и преуспейте только в том случае, если оба успешны
Представьте, что у меня есть следующий список:
lst :: [(Bool, Maybe Integer)]
lst = [(True, Just 3), (True, Nothing), (False, Just 12)]
Используя библиотеку линз, я хочу извлечь элементы кортежей, но я хочу, чтобы это удалось только тогда,...
98 просмотров
schedule
12.07.2022
Внутренний элемент фильтра из дерева через линзу
Я постоянно признаю, что плохо разбираюсь в объективах, но разве учиться на примерах — это не хорошо? Я хочу взять HTML, разобрать его с помощью taggy-lens , а затем удалить все элементы script изнутри. Вот моя попытка:
#!/usr/bin/env stack...
275 просмотров
schedule
24.07.2022
Что в объективе я должен использовать для создания геттера только для чтения по индексу?
У меня есть тип, внутренние детали которого скрыты. Я хочу предоставить какую-то линзу, которая может считывать элементы указанного типа по определенным индексам, но не изменять их. Экземпляр Ixed для моего типа, похоже, не делает то, что я...
249 просмотров
schedule
16.08.2022
Haskell: поднимите обычную функцию на линзу
У меня есть HashMap, который содержит разные вещи (значение от Aeson):
cs :: Hashmap Text Value
cs = fromList [("phone", String "+00"), ("count", Number 1)]
Я понял, что могу легко извлекать элементы с помощью Lens...
52 просмотров
schedule
21.08.2022
Haskell — линзы, использование функции «to»
У меня есть следующий код. Я хотел бы иметь возможность изменять жизнь активного игрока при задании состояния игры. Я придумал объектив activePlayer , но когда я пытаюсь использовать его в сочетании с оператором -= , я получаю следующую ошибку:...
820 просмотров
schedule
30.08.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
дерево обхода с линзами и молниями
Я изучаю пакет Lens. Должен сказать, что это довольно сложная задача.
Может ли кто-нибудь показать мне, как пройти по дереву с застежкой-молнией из объектива? В частности, как я могу написать функцию, которая берет список корней и позволяет мне...
2283 просмотров
schedule
21.02.2023