Вопросы по теме 'haskell-lens'

Можно ли вкладывать `at` с помощью сеттеров?
Я хотел бы установить значение на двухуровневой карте, то есть для ключа на карте, который является значением для некоторого ключа на «внешней» карте. Для обычной карты я мог бы использовать что-то вроде m & at 42 ?= "value" Но я не смог найти...
111 просмотров
schedule 19.10.2022

При манипулировании неизменяемыми структурами данных, в чем разница между помощником Clojure и линзами Haskell?
Мне нужно манипулировать и изменять глубоко вложенные неизменяемые коллекции (карты и списки), и я хотел бы лучше понять различные подходы. Эти две библиотеки решают более или менее одну и ту же проблему, верно? Чем они отличаются, для каких типов...
1877 просмотров

Как совместить линзы и функторы?
Я пытаюсь привыкнуть к библиотеке lens для Haskell и обнаруживаю, что борюсь с некоторыми простыми проблемами. Например, скажем (для удобства), что at и _1 имеют следующие типы (по крайней мере, я их так понимаю): at :: Ord k => k ->...
196 просмотров
schedule 15.05.2024

Есть ли ярлык для этого в Lens?
Есть ли ярлык для этого в библиотеке объективов? \x -> liftM (^. x) get Может быть, это глупый вопрос, но кажется, что это достаточно простая конструкция, и для нее должен быть ярлык.
291 просмотров
schedule 25.02.2024

Некоторые возможности и трудности использования линз в MonadState
Далее следует серия примеров/упражнений по линзам (автор Эдвард Кметт) в MonadState, основанных на решении Петра Пудлака на мой предыдущий вопрос. В дополнение к демонстрации некоторых применений и возможностей линз, эти примеры показывают,...
194 просмотров
schedule 01.11.2022

Изменить все четные значения с помощью линзы
Предположим, у меня есть такой массив: [1, 2, 3, 4] Как мне изменить только четные значения, используя пакет линз? Я ищу что-то вроде: filterLens even (+10) $ [1, 2, 3, 4] => [1, 12, 3, 14]
139 просмотров
schedule 12.11.2022

Каков синтаксис для составления сеттерных линз?
Я новичок в объективе и хочу составить две операции "установщика", которые будут эквивалентны этому преобразованию state0 в new_state2: let new_state1 = field1 %~ (const newVal1) $ state0 let new_state2 = field2 %~ (const newVal2) $...
286 просмотров
schedule 05.03.2024

Как получить классные линзы с перегруженными именами полей?
Я пытаюсь создать линзы для записей с одинаковыми именами полей. Наряду с этим я пытаюсь «обернуть/расширить» эти базовые записи и хочу, чтобы те же имена полей работали для обернутых/расширенных записей (что, как я полагаю, делают стильные линзы)....
371 просмотров
schedule 01.04.2024