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

Недопустимый полиморфный или квалифицированный тип в Control.Lens
Я работаю с Control.Lens . Фактическая функция, которую я пишу, довольно сложна, но для целей этого вопроса я свел ее к минимальному ошибочному примеру: import Control.Lens exampleFunc :: Lens s t a b -> String exampleFunc _ = "Example"...
1721 просмотров
schedule 10.06.2022

Как установить диапазон оси в библиотеке диаграмм Haskell
В диаграмме haskell, как вы меняете диапазон оси? Кажется, это как-то связано с линзами и окнами просмотра, но как новичок в Haskell мне трудно читать API:...
541 просмотров
schedule 15.01.2023

Как я могу выразить `mapM` с помощью `concat`, используя линзы для объединения результатов операции ввода-вывода?
Я пытаюсь понять, как объединить traverseOf с >>= таким образом, чтобы было возможно следующее. TLDR; Простым примером на чистом Haskell было бы что-то вроде этого, но с использованием линз глубоко внутри структуры данных. λ>...
554 просмотров
schedule 03.06.2024

Учебник по Haskell Lens с траверсом
Я пытаюсь следовать этому руководству: http://blog.jakubarnold.cz/2014/08/06/lens-tutorial-stab-traversal-part-2.html Я использую следующий код, который загружаю в ghci: {-# LANGUAGE RankNTypes, ScopedTypeVariables #-} import...
782 просмотров
schedule 03.02.2023

Создание бесточечной линзы не проверяет тип
В функции test я просматриваю список, генерирую линзы из его членов, а затем печатаю некоторые данные. Это работает, когда я использую точечный стиль вызова. Он не проверяет тип, когда я делаю его безточечным. Почему это так, и как я могу...
114 просмотров
schedule 24.07.2023

Используйте линзу для замены определенного элемента списка (ключ, значение)
Я хочу использовать библиотеку линз от Kmett для доступа к элементу списка (ключ, значение) в конкретный ключ. Другими словами, я хотел бы заменить этот код чем-то более идиоматичным и, возможно, более коротким: type Headers = [ (ByteString,...
258 просмотров
schedule 19.08.2022

Как я могу использовать (^? ix 0) в независимом геттере?
Извините за плохо сформулированный заголовок, но я даже не знаю, как его правильно задать. Как я могу повернуть это? instPublicIP :: Instance -> Maybe Text instPublicIP inst = inst ^. insNetworkInterfaces ^? ix 0 . iniAssociation . _Just ....
90 просмотров
schedule 23.11.2023

Простая линза Haskell из учебника нарушает закон линз
Я читаю этот учебник: http://blog.jakubarnold.cz/2014/08/06/lens-tutorial-stab-traversal-part-2.html и мой код выглядит так: import Control.Applicative import Data.Traversable import Control.Lens data User = User String [Post] deriving...
214 просмотров
schedule 30.03.2023

Как сделать изделие из двух линз?
Если у меня два объектива: foo :: Lens' X Foo bar :: Lens' X Bar Есть ли способ построить линзу продукта: foobar :: Lens' X (Foo, Bar) foobar = ... foo bar или это невозможно?
446 просмотров
schedule 30.08.2022

Как лучше всего представить короткую битовую строку?
Я хочу представить строку длиной до 120 бит, и скорость имеет решающее значение. Мне нужно иметь возможность построить битовую строку с помощью повторяющихся операций snoc , а затем использовать ее с помощью повторяющихся операций uncons . Одна...
395 просмотров

Объединение призм при извлечении полей JSON с помощью Lens-Aeson
У меня есть большой двоичный объект JSON, похожий на следующий: [ { "version": 1 }, { "version": "3" }, ... ] Обратите внимание, что некоторые версии являются числами, а некоторые — строками. Я хочу получить список версий....
347 просмотров
schedule 10.03.2024

Обоснование эквивалентности типов в Haskell Lens Library
Согласно учебнику. на объективах : type Getting b a b = (b -> Const b b) -> (a -> Const b a) -- ... equivalent to: (b -> b ) -> (a -> b ) -- ... equivalent to: (a -> b )...
82 просмотров
schedule 09.03.2023

Как определить тип составного обхода?
Я читаю запись в блоге на обходы объектива . В нем есть состав traverse.posts и это заканчивается типом (Traversable t, Applicative f) => ([Post] -> f [Post]) -> t User -> f (t User) Я понимаю, что это композиция...
97 просмотров
schedule 09.04.2024

Как преобразовать функцию в геттер линзы?
Вероятно, связано с Что в объективе я должен использовать для создания геттера только для чтения по индексу? Я ищу вариант функция линзы , которая позволяет мне создать Getter s a из s -> a . Существует ли что-то подобное?
105 просмотров
schedule 03.07.2023

Как линзировать поле записи, которая является полиморфной функцией?
Я только что установил библиотеку lens , поэтому я могу легко set использовать вложенную структуру данных. Однако я столкнулся с проблемой. Вот минимальный пример, демонстрирующий мою проблему Следующий код не компилируется: {-# LANGUAGE...
188 просмотров
schedule 04.02.2024

Как увеличить охват для типов записи с линзами?
Задний план Я использую типы записей с линзой . Я написал несколько модульных тестов с помощью HUnit и HSpec. Однако отчет о покрытии HPC показывает, что методы доступа к полям никогда не выполнялись. Таким образом, способствуя более...
49 просмотров
schedule 18.04.2023

Как указать параметры типа для At (картоподобные типы) из Lens в подписи типа Haskell?
Я хотел бы ограничить тип ключа ImageId и тип значения Sprite , оставив без ограничений конкретный тип карты с помощью В классе типов . Это возможно? Кажется, я получаю какое-то несоответствие, и, основываясь на сигнатуре типа, я не вижу, как...
116 просмотров
schedule 31.05.2024

Не удалось сделать вывод (показать a10), возникающий из-за использования «def»
Я застрял на этой ошибке довольно долгое время. Я не уверен, что я глуп, но я не могу понять, откуда это исходит... Тип данных Settings определяется так: data Settings a = Settings { _nodeDrawFunction :: a -> Diagram B ,...
134 просмотров
schedule 14.06.2023

Как можно экспортировать запись типа данных в haskell без экспорта ее полей?
Я видел несколько более старый вопрос в Избегание загрязнения пространства имен в Haskell и ищу современный решение с помощью линз. Я думаю, что подход будет состоять из нескольких шагов: Перепишите поля так, чтобы они подходили для линз:...
143 просмотров
schedule 08.02.2022

Как составлять ошибки с помощью data.validation
Я использую замечательный пакет Data.Validation для проверки. Однако я не могу правильно составить их для сложных типов. Я создал типы для электронной почты и пароля Email и Password соответственно. Я создал проверки и ошибки, которые могут...
77 просмотров
schedule 31.07.2022