Size: a a a

2020 December 08

к

кана in Haskell
то же самое будет
источник

к

кана in Haskell
at возвращает линзу на Maybe
ix возвращает траверсал на элемент

поэтому можно считать что при чтении ix k = at k . _Just
источник

к

кана in Haskell
при записи уже нет такого равенства
источник

A

Aminion in Haskell
А как через линзы осуществить фильтрацию Map, по ключу и значению? Через ifiltered как-то?
источник

к

кана in Haskell
нормально никак

Prelude Control.Lens Data.Map Data.Map.Lens:

> m = fromList [("a", 1), ("b", 2), ("c", 3)]
> m & toMapOf (itraversed . ifiltered (\k v -> k == "a" || v == 2))
fromList [("a",1),("b",2)]
источник

к

кана in Haskell
но это по сути то же самое что и

Map.fromList (m ^@.. itraversed . ifiltered (\k v -> k == "a" || v == 2))
источник

a

adam in Haskell
там есть mapWithKey внутри
источник
2020 December 09

к

кана in Haskell
внутри чего? Это внутри Data.Map, не линз
источник

a

adam in Haskell
и не нужно шарить индексированные  траверсалы
источник

к

кана in Haskell
не ну я соглашусь, я бы тоже такое сделал через mapWithKey из Data.Map

мои ответы исходят из вопроса, где нужны линзы

другое дело что линзы я до этого сам навязал парой сообщений выше
источник

a

adam in Haskell
ну тогда грамотнее было бы ответить с предлогом "но" как лучше бы решалась эта проблема так как видно же что чел начал загоняться
источник

a

adam in Haskell
ваш, зануда
источник

к

кана in Haskell
а нет
источник

к

кана in Haskell
mapWithKey не подходит
источник

к

кана in Haskell
нужен traverseMaybeWithKey
источник

к

кана in Haskell
или просто filterWithKey
источник

A

Aminion in Haskell
Окей, линзы не всесильны, filterWithKey был моим первым выбором
источник

к

кана in Haskell
не ну решение на линзах я выше дал
источник

к

кана in Haskell
просто оно очевидно сложнее чем простой filterWithKey
источник

MK

Maxim Koltsov in Haskell
И оно через список проходит, вроде
источник